Привет, Хабр. Я, Иван Бакаидов, и проект LINKa, который раньше назывался aacidov, но об этом в печальном офф-топе, выпускает приложение LINKa. Бумажная клавиатура. Это виртуальная клавиатура предназначенная людям с нарушениями моторики. Приложение open-source, доступно на Android и iOS и будет радо вашим идеям.

Скриншот приложения LINKa. бумажная клавиатура.

Идея


Идея приложения пришла ко мне в голову из-за прогулки с подругой. Мы сидели в кафе и она пыталась попасть рукой в клавиатуру моего макбука с целью что-то сказать. У ноутбука клавиши мелкие, у девушки движения неловкие, получалось плохо. После свидания я приехал домой и благополучно лег спать… Проснулся в три часа ночи с совершенно элементарной идеей: «Можно же сделать виртуальную клавиатуру с очень крупными кнопками, а чтоб они все на экран помещались, надо сделать страницы”. Мне иногда становится стыдно за то, какие простые приложения делаю. В пять часов утра пришлось ширяться коралловом, ибо идея идеей, а спать надо. Ну не, как true proger я должен был сесть ее ночью делать, но оправдаю себя тем, что живу пока в одной комнате с братом.


Собственно принцип программы прост. Посередине квадратная сетка, сбоку кнопки „Предыдущий лист“ и „Следующий лист“, вверху поле вывода, внизу кнопки управления цирком.

Название приложения происходит от аналогового устройства ввода информации в окружающих людей, которое используют многие семьи с безречевыми людьми, стоимостью 25 рублей, а именно картонной клавиатуры с наклеенным алфавитом или русской раскладкой, напечатанной в 48 pt.

бумажная клавиатура в ламинировании

Реализация


Реализация заставила себя ждать до следующего вечера, когда я часа за два набросал рабочую версию приложения. В основу лег GridView, который разбивал алфавит в квадратную сетку с задаваемым количеством столбцов, в зависимости от степени поражения пользователя. По бокам расположились также очень крупные кнопки перелистывания страниц, чуть позже собразил сделать перелистывание по кругу и еще позже, после релиза 1.0, добавить на кнопки буквы, которые будут на предыдущем и следующем экранах. Беру классический алфавит, а не частотный, чтобы пользователю было легче ориентироваться куда бежать.

С iOS приложением помог Андрей из IceRock Development, спасибо ему большое.

Эксперименты


Печатаю на paperboard в ВК

Благодаря гайду на официальном сайте Android, пробую сделать интеграцию клавиатуры в саму систему как средство ввода. Работа идет довольно успешно, хотя у меня вызывает сомнения отсутствие предиктора (Т9) и не понятно куда его прикрутить. Буду рад идеям, pull request'ам и т.п.

Ссылки



Чем помочь?


  • Посмотреть и почистить код.
  • Дать потестить знакомому с проблемами моторики / написать рекламный текст / дать выходы на реабилитационные центры. Хабр довольное странное место для поиска моей ЦА, но всё же вдруг у вас есть iPad и бабушка с трудностями моторики.
  • Помочь с реализацией клавиатуры в системе
  • Просто обняться.
  • Donate чисто по желанию

RIP


В июле 2017 года от острой сердечной недостаточности скончалась Ангелина Титова, главный вдохновитель проекта и моей первой статьи на Хабре.

В ее светлую память было решено переименовать проект.





Спасибо за вашу поддержку, хабровчане.

Комментарии (25)


  1. phaggi
    24.08.2018 12:24
    +1

    Простите, я не нашел знаков препинания.
    Кроме того, знак пробела выглядит как подчеркивание — не сразу понял, что это. Мне кажется, для пробела есть другой символ, более интуитивно понятный.


    1. ibakaidov Автор
      24.08.2018 12:26

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



      1. phaggi
        24.08.2018 13:15

        По ощущениям: для того, чтобы произнести текст вслух, если у Вас нет другой возможности — вполне подойдёт. Да, приходится использовать слишком много нажатий, чтобы набрать текст — но это, конечно, плата за пролистывание клавиатуры туда-сюда.

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


  1. ogrius
    24.08.2018 13:30
    +1

    Не увидел кнопок для управления курсором. Штука нужная, так мама просила в свое время найти клавиатуру с крупными «клавишами» и кнопками управления курсором.


    1. ibakaidov Автор
      24.08.2018 13:32

      О, вообще не думал об этом, спасибо, добавлю


  1. KaneUA
    24.08.2018 13:44

    А чем для таких целей плоха клавиатура как на телефонах 2000х годов, где на каждую кнопку по несколько символов? Просто сделать её большой. Да, нажимать надо несколько раз, но переключаться между страницами не нужно. Это позволяет по памяти вводить символы не запоминая на какой ты странице. Плюс большинство людей более-менее с ней знакомо и для каждого языка уже есть стандартная «раскладка».


    1. ibakaidov Автор
      24.08.2018 13:54
      +1

      Плоха она наличием тайм-аута между выбором следующей буквы и вводом буквы. У некоторых людей нажатие кнопки занимает секунд пять. А тайм-аут будет вызывать еще дополнительную судорогу — быстрей-быстрей. Думал об этом.


      1. Oqtavus
        24.08.2018 19:52
        +1

        Есть режим T9, когда кнопка на которой находится нужная буква нажимается один раз, а слово затем выбирается из словаря. Да, бывают косяки, типа слов «ушко» и «рыло», когда буквы находятся на одних и тех же кнопках, бывают отсутствующие слова в словаре. Но тем не менее это способ обойтись 9 кнопками вместо 33.


      1. KaneUA
        25.08.2018 00:46
        +1

        Ну так можно сделать кнопку «закончить ввод символа», чтобы не торопить никого. Например, там где звёздочка/решетка на телефоне. И текущий символ считать завершенным когда нажата или кнопка завершения, или какая-то другая из буквенных.


  1. mammuthus
    24.08.2018 14:03
    +1

    Предиктивный ввод так и просится. В чем трудность расположить его еще одной строкой, выше кнопок?


    1. ibakaidov Автор
      24.08.2018 16:17

      скорее трудность найти само решение предективного набора.


  1. 402d
    24.08.2018 14:16

    Заглянул в код приложения.
    github.com/linkasu/paperboard-android/blob/master/app/src/main/java/su/linka/linkapaperboard/ControllButtonsController.java#L35
    предлагаю заменить на одиночное нажатие stackoverflow.com/questions/15353457/single-click-and-double-click-of-a-button-in-android
    на случай когда пальцы дрожат.

    При смена ориентации у Вас введенный текст теряться?


    1. ibakaidov Автор
      24.08.2018 14:18

      У меня в коде зафиксирована ориентация, как Вы смогли ее поменять?
      Про нажатие хорошая идея, поменяем, я бы еще опционально сделал на прикосновение, т.к некоторым людям сложно даже нажать.


      1. 402d
        24.08.2018 14:27

        Про ориентацию просто спросил. Так как при просмотре не заметил в коде.


      1. 402d
        24.08.2018 14:31

        Дисфункции как я понимаю разные бывают.
        И стандартные компоненты типа кнопок могут не подходит.
        Тут наверное правильней всю область рисовать как одну
        картинку и работать с касаниями экрана напрямую.


        1. GeMir
          25.08.2018 00:22

          Дисфункции как я понимаю разные бывают.
          Следовательно 3?3-клавиатура подойдёт не всем. 2?2 и к примеру 1?3 как альтернативные раскладки могут оказаться не лишними.


  1. 402d
    24.08.2018 14:19

    Вопрос не будет удобнее схема ввода букв в два нажатия
    [А, Б, В, Г] [Е, Ж, З, И] [К, Л, М]
    [,,,][,,,][,,,]
    [,,,][,,,][,,,]

    второй экран
    [А][Б][В]
    [Г]


  1. CAJAX
    24.08.2018 14:31

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


    1. Sabubu
      25.08.2018 17:30

      А как насчет такого: сделать на каждой кнопке по 2-3 буквы и угадывать набранное слово программно? Плюс, есть вторая идея. В некоторых древних алфавитах гласные пропускали и писали только согласные. Может быть так можно?

      нпрм = например
      сбк = собака

      И так далее. Пусть программа угадывает слово.


  1. Sultansoy
    24.08.2018 17:46
    +1

    Тут сразу пришло в голову много идей.
    На первую вдохновил комментарий выше. Делаем клавиатуру как в кнопочных телефонах. Зажимаем кнопку, буквы потихноьку с таймаутом 1 секунда (можно настроить) начинают менять друг друга. На нужной букве разжимаем и получаем то, что надо.
    Вторая идея. Обязательно добавить автодополнение. Классика. 3 слова сверху.
    Третья. А почму бы на страницах не отображать буквы в порядке qwerty. То есть:
    й ц у \\ у к е \\ г ш щ \\ з х ъ
    ф ы в \\ в а п \\ о л д \\ ж э?
    я ч с \\ м и т \\ ь б ю \\, пробел.


    1. ibakaidov Автор
      24.08.2018 17:51

      вы помните наизусть qwerty? я тоже, а семилетний ребенок вряд ли


    1. GeMir
      25.08.2018 00:12

      Клавиатура «как в кнопочных телефонах» будет удобна (привычна) тем, кто ещё застал кнопочные телефоны.


  1. ibakaidov Автор
    24.08.2018 19:20

    1.2.0

    Добавлена возможность устанавливать клавиатуру в качестве средства ввода.
    Поменяли значок пробела.


  1. GeMir
    24.08.2018 23:59
    +1

    Идея (первый скриншот): сделайте надписи на клавишах крупнее раза в два. Пальцами при наборе перекрываться не будут, да и людям с подсевшим зрением будет легче. Строка с набранным текстом тоже теряется, а у неё здесь весьма не второстепенная роль.