Экранные клавиатуры для raspberry

Установите виртуальную сенсорную клавиатуру на Raspberry Pi.

ⓘ Эта статья могла быть частично или полностью переведена с помощью автоматических средств. Приносим извинения за возможные ошибки.

Если вы используете сенсорный экран со своим Raspberry Pi, вы, вероятно, уже сталкивались с проблемой отсутствия виртуальной клавиатуры!

Хотя сама основа Raspberry Pi предлагает сенсорный экран для Raspberry Pi, Raspbian не включает в себя виртуальную клавиатуру, которая позволяет нам вводить текст прямо с сенсорного экрана.

Сегодня мы увидим, как установить виртуальную клавиатуру на Raspberry Pi, чтобы писать с экрана!

Материал, необходимый для этого урока

Для выполнения этого урока вам потребуются следующие материалы:

  • Raspberry Pi (модель не имеет значения).
  • Его зарядное устройство
  • SD-карта с установленным Raspbian (и включенным SSH, если у вас нет клавиатуры, см. Наше руководство по SSH)
  • Способ ввода текста на Raspberry Pi (это может быть клавиатура, компьютер с клиентом SSH или даже сотовый телефон с JuiceSSH)
  • И конечно же сенсорный экран!

Это руководство создано с использованием официального сенсорного экрана, но неофициальные сенсорные экраны тоже будут работать!

Виртуальная клавиатура для Raspberry Pi

В Linux существует множество виртуальных клавиатур, но нам нужно найти такую, которая совместима с Raspberry Pi и, если возможно, доступна непосредственно в репозиториях Raspbian.

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

Установите нашу сенсорную клавиатуру на Raspberry Pi

Установить Florence на Raspberry Pi относительно просто, поскольку он присутствует в репозиториях Raspbian. Нам просто нужно установить его через эти репозитории с помощью следующих команд:

Первая команда обновит список репозиториев Raspbian. Второй установит Флоренцию. Виртуальная клавиатура теперь доступна при нажатии на меню Raspbian и в подкатегории «Универсальный доступ».

Виртуальная клавиатура закрывается сама по себе!

Если на этом остановиться, у вас будет странный баг: когда вы нажимаете клавишу на сенсорной клавиатуре, она закрывается … Почему?

Оказывается, что для взаимодействия с другими программами сенсорная клавиатура должна использовать протокол с именем D-Bus и определенный пакет с именем at-spi2-core .

Пакет at-spi2-core является своего рода наложением на D-Bus и используется для связи с программами чтения с экрана, используемыми людьми с ограниченными возможностями. Поэтому он используется Флоренцией и необходим для ее работы.

Итак, нам нужно будет установить at-spi2-core в дополнение к виртуальной клавиатуре. Опять же, нам просто нужно пройти депозиты!

И вот оно, если вы перезапустите клавиатуру, все будет выглядеть красиво и чисто, и если вы нажмете на клавишу, все заработает!

Измените язык виртуальной клавиатуры.

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

Для смены языка клавиатуры есть два решения. Либо вы используете команду setxkbmap , который позволяет вам установить язык клавиатуры, и вам нужно будет добавить его в свой файл

/.bashrc так что он запускается при каждом запуске.

Либо, и это решение, которое мне кажется наиболее чистым, вы используете настройки Raspbian напрямую.

Для первого решения введите следующие команды (замените FR на код нужного языка):

Для второго решения щелкните меню Raspbian, перейдите в раздел «Настройки», затем «Клавиатура и мышь» и в части клавиатуры измените настройку «Раскладка клавиатуры» на желаемую.

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

Итак, наша виртуальная клавиатура теперь на правильном языке!

Некоторые дополнительные настройки

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

Для этого вам просто нужно нажать на маленький гаечный ключ слева от клавиатуры.

Однако будьте осторожны, оставьте настройку поведения указателя на «Мышь». Если вы переключите его на «Сенсорный экран», вы, вероятно, получите опечатки, двойные буквы и т. Д.

И вот, у вас есть виртуальная клавиатура на Raspberry Pi, которая позволит вам писать прямо с сенсорного экрана!

Источник

[Решено] Экранная клавиатура для Raspberry Pi

Снова всем привет!

Не смог найти в Raspberry Pi OS функции экранной клавиатуры, не знаете как можно это реализовать? Очень уж неудобно подключать USB клавиатуру постоянно, а дисплей с тачскрином вроде как позволяет этого избежать.

Как вариант, пакет — matchbox-keyboard. Установка:

После установки запуск через Menu — Accessories — Keyboard.

Если такого пункта нет в меню, то добавляем через Main Menu Editor. Main Menu Editor — Accessories — ставим галочку напротив Keyboard.

Либо можно попробовать onboard

@gorpi @aveal спасибо! Пока matchbox-keyboard пробую, посмотрим как пойдет.

В данный момент смотрят эту тему 1 гость.

Иконки тем : Не отвечен Отвеченный Активный Актуально Закреплено Неодобренно Решено Приватный Закрыто

Рубрики

Сообщество

Свежие записи

Свежие комментарии

  • Aveal к записи Обучение нейронных сетей. Обратное распространение ошибки.
  • O’Chlamone к записи Обучение нейронных сетей. Обратное распространение ошибки.
  • Сергей к записи Библиотека Button для обработки нажатий кнопок на STM32. KY-004.
  • Эдуард-Анисимов к записи Часть 1. STM32 и С++. Как избавиться от HAL и перейти на С++.
  • Валерий к записи Часть 1. STM32 и С++. Как избавиться от HAL и перейти на С++.

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

Strictly Necessary Cookies

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.

If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.

Источник

Решение для виртуальной клавиатуры Raspberry Pi Raspbian Web Kiosk

Я следовал пошаговому руководству Алана Д. Мура, чтобы мой Raspberry Pi работал в режиме киоска.

Я сделал свою собственную конфигурацию, так как мне нужно было работать на сенсорном экране без физической клавиатуры и мыши.

Вот как выглядит мой файл

Я использовал apt-get install для клавиатуры matchbox, которая будет использоваться в качестве экранной виртуальной клавиатуры.

Просто посмотрите, как маленькие ключи! Едва осязаемый и супер неточный .

Реальный вопрос в том, знает ли кто-нибудь, как увеличить клавиатуру, может порекомендовать другие решения или настроить конфигурацию? Я новичок в Debian, поэтому очень надеюсь, что мне здесь помогут. :)

Постарайтесь уменьшить разрешение вашего экрана для X или для RPI в целом до чего-то меньшего, то есть 1024×768 или аналогичного значения, в зависимости от соотношения сторон подключенного монитора.

Как правило, в Linux вы можете сделать это в настройках X-сервера (xorg.conf), но для RPI просто отредактируйте /boot/config.txt, чтобы включить определенный режим видео, то есть:

Все режимы (включая не HDMI) перечислены здесь для вашей справки: http://elinux.org/RPi_config.txt

Вы должны быть в состоянии контролировать, где отображается matchbox-клавиатура, используя —geometry аргумент. Эта страница предполагает, что соответствующий вызов будет примерно таким:

спичечная клавиатура —geometry HxW.yx

x и y — это экранные координаты верхнего левого угла окна клавиатуры (из верхнего левого угла экрана), а W и H — ширина и высота клавиатуры.

Существует приложение под названием devilspie2, которое позволяет вам возиться с тем, куда движутся окна при первом запуске приложения, если они не поддерживают аргумент командной строки —geometry (это большинство приложений).

Что вам нужно сделать, это сначала установить:

А затем добавьте его в файл .xinitrc, чтобы он запускался, когда X делает:

Наконец, вам нужно настроить devilspie2, чтобы он знал, что делать с matchbox-клавиатурой. Вам необходимо отредактировать

x, y, W, H такие же, как указано выше. Предполагая 1920×1080, я бы предложил что-то вроде 0,600,1920,480.

Источник

Делаем из Raspberry клавиатуру при помощи PS/2 интерфейса

Здравствуйте, уважаемые хабражители!

В этой публикации я расскажу об эмуляции PS/2 клавиатуры при помощи Raspberry Pi.

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

За день количество проданного товара могло превышать полторы тысячи позиций. Вводить штрих код каждого из них в итальянскую систему стало проблематично. Алгоритм ввода был следующий: ввели штрих код, нажали «Ввод» — и по новой. Договорились встретиться на утро и подробно рассмотреть варианты.

Долго не думая, я написал программу, которая последовательно берет данные с Excel листа и посылает в активное окно. Убедившись, что все работает, пошёл спать.

На следующий день меня ждал сюрприз, о котором я, почему-то, сразу и не подумал. На машине с итальянской программой стояли жёсткие групповые политики, запрещающие запуск сторонних программ по хеш-листу. Админы (тоже итальянцы, кстати) не хотели брать на себя ответственность и разрешать запуск сторонних программ. На обход системы защиты одобрения от местного руководства я не получил. Тут-то и пришла идея решения данной проблемы с аппаратной стороны (ведь никто не запрещает подключать стороннюю клавиатуру). Вспомнил я и про Raspberry Pi, который пылился у меня дома.

Начались поиски документации с описанием PS/2 интерфейса. К счастью, на первом же попавшемся ресурсе (), нашёл всю необходимую информацию.

Распиновка кабеля PS/2 клавиатуры

Как оказалось, необходимыми для всей работы провода было 4.
Черный — земля;
Красный — 5V;
Желтый –пин синхронизации времени (CLOCK);
Белый – пин с данными (DATA).

Цвета могут слегка отличаться. Даже из этих 4-х проводов мне понадобились только два — желтый и белый (в земле и 5v мой аппарат, в отличим от клавиатуры, не нуждался).

Описание работы протокола PS/2 (клавиатура -> хост-контролер)

Определимся с терминологией: если на пине присутствует напряжение — будем считать это состояние как 1, иначе 0.

По умолчанию, когда компьютер в состоянии принимать данные, на обоих пинах (CLOCK и DATA) установлено состояние 1. Его устанавливает хост-контроллер на материнской плате компьютера. Принимаем управление на себя, подавая свое напряжение на оба пина (контроллер м.п. снимет свое напряжение). Для инициализации передачи данных мы должны послать 0-й бит компьютеру (не путать с состоянием 0). Для этого в пине DATA устанавливаем состояние 0 и сразу после этого состояние пина CLOCK тоже переводим на 0 (именно в этом порядке). Мы дали хост-контроллеру понять, что хотим передать первый бит. Теперь, если вернуть состояние пина CLOCK на состояние 1, хост-контролер считает первый бит. Таким образом, будем передавать и все остальные биты.

Первый бит всегда 0, это старт-бит (даем знать, что передаем данные).
Далее передаем 8 бит скан-кода клавиши, которую хотим нажать.
Десятым битом подаем бит четности (если количество единиц четное, то 1, иначе 0).
Последний, 11 бит, это стоп-бит, всегда 1.

Таким образом, один пакет данных формируется из 11 бит.

К примеру, если мы хотим нажать клавишу «0» (скан-код 45h= 1000101 в бинарном виде) на хост-контролер посылается следующий массив бит: 01010001001.

Приняв эти данные, компьютер обработает команду нажатия данной клавиши, но ее еще необходимо отжать. Для этого необходимо сперва послать команду F0h, а после — повторно скан-код клавиши, которую необходимо отжать. Так же, между сменами состояний необходимо удерживать паузу. Опытным путем я установил наиболее подходящее: 0.00020 сек если работать на Python и 1 наносек, если кодить на Java.

Схема подключения к хост-контролеру

Несколько слов о том, почему я подключил аппарат параллельно клавиатуре. При включении компьютера BIOS проводит проверку состояния PS/2 разъемов. Компьютер и клавиатура обмениваются данными о готовности работать. Клавиатура должна провести внутреннюю диагностику и доложить компьютеру о своей готовности. Только после этого биос разрешает работать с PS/2 интерфейсом. Реализовывать чтение команд от компьютера я поленился.

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

Программная часть

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

Вот и сам код на Phyton:

Серверная часть на Java:

Клиентская часть на Java:

Пример оцифрованного сигнала, отправленного с моего аппарата на компьютер. Нижний канал CLOCK, верхний DATA. Сигналы посылаю с Python’а

Заключение

Конечно, использовать Raspberry для такой мелкой задачи чистой воды расточительство. Можно было использовать Arduino или собрать схему на дешевеньком arm процессоре. Но это была просто импровизация, которая первой пришла на ум, да и ждать, пока прибудут все необходимые запчасти из Китая, не особо хотелось.

В общем, надеюсь, кому нибудь пригодится данный опыт. Лично я получил массу удовольствия от всего этого процесса.

Источник

Adblock
detector