Программа-помощник для освоения слепой печати на клавиатуре в Linux. Как добавить в Android проверку правописания на русском языке

17.05.2019

15/11/2017

KDWin – программа, предназначенная для людей, которым необходимо постоянно набирать текст на разных языках. Известно, что практически на любой клавиатуре обозначаются только 2 языка, т.е. Английский, а также тот язык, где была куплена клавиатура. Программа KDWin позволяет изменять раскладку клавиатуры, а также даёт возможность пользователю набирать определённые слова без знания раскладки. Программа автоматически заменяет все буквы, которые набираются пользователем, на аналогичные символы в нужном вам языке. Например, Русская Ф будет заменяться на Английскую F, либо наоборот.Кроме этого, программа KDWin имеет встроенный конверте...

18/10/2016

MediaKey (Mkey) – утилита, созданная специально для наделения обычных клавиатур различными мультимедийными функциями. Это значит, что теперь Вы сможете назначать горячие клавиши для выполнения определённых действий. Например, одновременное нажатие клавиш Ctrl и - будет уменьшать звук, а сочетание Ctrl и + – наоборот, прибавлять громкость. Это будет намного дешевле, чем приобретать в магазине дорогостоящую клавиатуру с кнопками, регулирующими воспроизведение, паузу, остановку композиций и т.д. Утилита MediaKey обладает множеством полезных возможностей. С её помощью можно управлять такими плеерами, как Media Player Classi...

20/07/2016

Punto Switcher удобная программа для автопереключения раскладки клавиатуры. Она создана для удобства ручного набора текста на клавиатуре. Чтобы вы могли печатать не отвлекаясь на раскладку. В новой версии добавлена поддержка Windows 8 а также автоматическое определение ввода пароля. Программа лучшая в своём классе и не имеет конкурентов. В программе есть встроенная функция запоминания используемых вами часто определённых слов. Есть горячие клавиши для отмены переключения раскладки. Большой плюс программы в том что она увеличивает продуктивность и удобство работы за компьютером. Программа абсолютно бесплатна для использования.

24/11/2015

AutoHotkey – программа для создания скриптов и макросов. Позволяет сделать всё что душе угодно с клавиатурой, мышью и джойстиком. С её помощью можно сменить значение горячих клавиш и включать выбранные кнопки, например мыши. Все скрипты создаются с помощью своего собственного языка и обычно сохраняются в текстовом файле. Также в комплекте идёт компилятор, с помощью которого можно создавать exe файлы. Утилита пригодиться в основном в компьютерных играх, но на этом её функциональность не заканчивается. Скрипты позволяют манипулировать окнами, файлами, папками, системным реестром и многим другим. Она может симулировать любые дейст...

18/03/2015

ReGen KeyCode – функциональная утилита, выполняющая работу по определению кодировки нажатой клавиши на любой клавиатуре. Программа показывает кодировку, которая присвоена нажатой клавише. Показывает такие параметры, как ASCII и brCode (браузерная кодировка). Помимо этих параметров приложение автоматически переводит введенный код в шестнадцатеричную, а также двоичную системы. Полученный код в любом виде можно скопировать в буфер обмена, а затем вставить в необходимое место. Приложение проверяет автоматически любые доступные обновления. Имеет большой спектр вариантов языка интерфейса. Позволяет быстро, просто, удобно получить люб...

26/02/2015

Key Switcher – удобная утилита, предназначенная для автоматического переназначения раскладки клавиатуры. Срабатывает при неправильном введении текста. Программа сама исправляет опечатки. Корректирует регистр букв. Если пользователь случайно поставил две прописные буквы, Key Switcher и это исправит. Любое действие совершённое приложение можно откатить просто щёлкнув на клавишу Backspace. Утилита оценит все действия пользователя и запомнит, что делать не стоит. При исправлении ошибок и опечаток программа всегда ориентируется на тип текста. Позволяет назначать иные клавиши для смены и переключения языка. В некоторых моментах прево...

04/06/2014

Logitech SetPoint предназначена специально для людей, использующих устройства этой фирмы. Данная программа позволяет изменять назначение функциональных клавиш на клавиатуре и мышее. Например, вы можете задать какой-либо клавише функцию открытия какой-либо веб-страницы, либо установить горячую клавишу на запуск нужной вам программы. Позволяет задать горячие клавиши, не только исходя из наличия функциональных или дополнительных клавиш на вашей клавиатуре. Имеется возможность задать вообще любое сочетание клавиш на почти любое действие. Кроме этого, если на вашей клавиатуре имеется ЖК дисплей, то можно задать информацию, к...

27/06/2013

Free Virtual Keyboard – удобная утилита, предназначенная, в первую очередь для владельцев планшетных компьютеров, а также для ноутбуков, которые имеют сенсорный экран. Данная утилита полезна в тех случаях, когда ваша клавиатура для вас слишком неудобна, либо она вообще отсутствует по каким-то причинам. Именно в таких случаях можно использовать утилиту Free Virtual Keyboard. Программа отличается тем, что позволяет изменять размеры виртуальной клавиатуры, чтобы вы видели необходимую вам информацию в окне помимо клавиатуры. Также, программа позволяет легко регулировать прозрачность этого окна. Имеется функция автоповтора символа.

Было отмечено, что клавиатурные тренажеры помогают ускорить ввод текста и, соответственно, значительно сэкономить время. Нужно учесть еще один аспект: «общение» с компьютером возможно благодаря горячим клавишам, которые, собственно, и задуманы для повышения быстродействия.

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

При обзоре, особое внимание уделялось следующим основным функциям:

  • Настройка горячих клавиш и расширение стандартных системных возможностей клавиатуры
  • Автоисправление ошибок ввода, в т. ч. при смене раскладки
  • Запись макросов, сценариев
  • Вставка текста из Буфера обмена, работа с шаблонами, поддерживаемые форматы текста

AutoHotkey

Утилита AutoHotkey предназначена для написания сценариев, которые решают задачи, такие как:

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

Сценарии составляются вручную, инструментов для их записи в графическом режиме не предусмотрено, хотя в составе программы присутствуют утилита для определения координат мыши, позиции активного окна (Window Spy) и конвертер сценариев в EXE-файл (Ahk2Exe).

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

Простейший пример сценария AutoHotkey - запуск приложения клавиатурной комбинацией Ctrl + Alt + C: ^!c::Run calc.exe

где "!" - это Alt, "^" - Control, «c» - клавиша C. Скрипт можно создать на Рабочем столе («Создать → AutoHotkey Script» в контекстном меню) и отредактировать в любом редакторе. Сценарий вступает в силу после запуска файла.

Благодаря скриптам AutoHotkey, можно не только запускать программы или открывать документы, но и передавать в активное окно нажатия клавиш и клики, управлять окнами, оперировать данными (например, создавать и удалять файлы, записи Реестра), программные оболочки, диалоги, кнопки, требующие участия со стороны пользователя. Теоретически, любая, ошибка, умышленная или случайная, может привести к непредсказуемым последствиям, вплоть до потери данных. Впрочем, подобная функциональность вызовет интерес только у достаточно опытного пользователя.

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

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

[+] Широкие возможности для написания сценариев
[+] Документация, наличие примеров
[+] Поддержка различных устройств для ввода
[−] Требуется изучение синтаксиса для создания скриптов

Punto Switcher

Punto Switcher анализирует и исправляет ошибки, которые совершаются «на автомате» и регулярно отнимают время на исправление: случайно зажатый Caps Lock, неверная раскладка, две заглавные буквы в начале слова и подобные случаи.

Поддерживаются два языка раскладки - русский и английский. Punto Switcher «случайно распознает» и другие языки, однако нельзя говорить о полноценной работе с альтернативными раскладками. По словам разработчиков, такие планы у них есть.

Исправления вносятся автоматически либо вручную, с помощью горячих клавиш. Сочетания представлены не столь широко, как других клавиатурных менеджерах. Относятся они к исправлению вышеназванных ошибок, общим настройкам программы. Например, можно активировать или отключить опции автоматического исправления аббревиатур, заглавных букв, случайных нажатий. Punto Switcher отслеживает Буфер обмена, позволяя конвертировать, транслитерировать или проверить орфографию текста. То есть, понятно, что здесь нет возможности назначить комбинацию для запуска приложений, системных команд.

Программа не вызывает конфликтов с другими приложениями, однако на практике способна замедлить ввод в текстовых полях или т. п. На этот случай можно составить список приложений-исключений, дополнить правила переключения, деактивировать автопереключение раскладки. Одно из недавних нововведений менеджера - автоматическое распознавание поля ввода пароля (раньше приходилось временно ограничивать действие Punto Switcher). На данный момент совместимость с Windows 8 и выше не гарантируется (статус beta), для полноценной работы требуется запуск программы от имени администратора.

Дополнительная возможность Punto Switcher - ведение дневника. Безвозвратно утраченную - казалось бы - запись, достаточно легко восстановить, достаточно перестраховаться, активировав соответствующую опцию и настроив длину слов, фиксируемых в журнале.

Резюме . Если давать краткое определение, то Punto Switcher - это клавиатурный менеджер, а не менеджер горячих клавиш. Поэтому у программы более широкое применение, при меньшей, чем у других участников, функциональности. Она незаменима при ведении переписки, редактировании текстов - в особенности, многоязычных. В идеале, Punto Switcher требуется расширенная поддержка горячих клавиш, автодополнения и пользовательских словарей, распознавании языков, отличных от русского или английского.

[+] Исправление ошибок ввода
[+] Ведение журнала
[+] Расположенность к пользователю
[−] Сравнительно невысокая функциональность
[−] Поддержка только двух языков раскладки

Key Switcher

Программа Key Switcher является «наследником» Keyboard Ninja - известной в свое время альтернативы Punto Switcher. Key Switcher также анализирует ввод текста и исправляет ошибки, которые могут возникать при вводе. Главным образом, «переключатель третьего поколения», как называет программу автор, привлекает внимание поддержкой 24 языков переключения.

Программа работает в одном из 4 режимов: полноценный, безопасный, ручной и неактивный режим. В зависимости от этого, Key Switcher различным образом реагирует на ввод текста. Если автоисправление нужно отменить - выручает умная отмена переключения по backspace, в любом случае переключение раскладки легко деактивировать.

Предусмотрена возможность обучения Key Switcher, самостоятельно можно определить список исключений, а вот составить список программ-исключений, увы, нельзя. Правила автокоррекции дополняются вручную, плюс стоит отметить автозамену, которая позволяет создавать сокращения для ввода слов.

Для ввода паролей предусмотрено специальное хранилище, где они хранятся в зашифрованном виде. Журнала для хранения текста в программе нет. В целом, опций в Key Switcher не так уж и много (в Keyboard Ninja их было гораздо больше), особенно сказывается слабая поддержка горячих клавиш.

Резюме . По сравнению с Punto Switcher, Key Switcher обладает такими преимуществами, как широкий перечень поддерживаемых языков и наличие нескольких режимов работы. В Punto Switcher, однако, более гибкая система исключений, настройка горячих клавиш, большее количество настроек в целом. Хотя, в целом, обе программы взаимозаменяемы.

[+] Поддержка 24 языков
[+] Режимы работы на выбор
[+] Автозамена и автокоррекция
[−] Нельзя составить список программ-исключений
[−] Слабая поддержка горячих клавиш

Key Manager

Key Manager - программа-оболочка для назначения действий на кнопки мыши, прокрутку колеса, клавиатурные комбинации, создания всплывающих меню и других способов вызова.

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

При добавлении нового действия, в окне настроек указывается действие при вводе: это могут быть всевозможные вариации нажатий, кликов различной продолжительности нажатий. Также можно создавать пользовательские модификаторы, всплывающие меню с отображением команд. Выполняемые действия можно охарактеризовать как несложные: отправка письма, открытие сайта, вставка текста, запуск программы, вызов системной команды, управление питанием, звуком и т. п. Key Manager поддерживает вставку простого или RTF- текста, с использованием переменных и шаблонов, а также впечатывание.

Работа с данными (копирование, удаление файлов) в Key Manager не представляется возможной - но для клавиатурного менеджера, по определению, это уже внештатные функции. Макросы здесь необходимы, скорее, для записи последовательности нажатий кнопок и клавиш. Запись производится в разделе «Последовательность нажатий» с помощью редактора действий.

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

Резюме . Благодаря удобным настройкам, русскоязычному интерфейсу и , программа интуитивно понятна для пользователя. Key Manager оправдывает свое название как менеджер горячих клавиш, и самое примечательное здесь - это применение всевозможных клавиатурных (и не только) комбинаций для выполнения команд.

[+] Удобный интерфейс и простая настройка действий
[+] Работа с текстовыми шаблонами
[+] Создание пользовательских модификаторов

Comfort Keys

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

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

Более тонкая настройка осуществляется в разделе «Настройка быстрых клавиш» основных параметров Comfort Keys. Здесь можно выбрать комбинацию клавиш и вид действия из списка: запуск программы, открытие файла, управление устройствами и многое другое, чего нет в мастере. Удобным представляется создание наборов горячих клавиш, их можно распределить на свое усмотрение и переключаться между профилями по мере надобности.

Можно записать макрос нажатия клавиш и на него назначить комбинацию. Проводя параллели с Key Manager, стоит отметить, что задействовать мышь при вызове нельзя, да и в целом скриптовые возможности весьма ограничены.

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

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

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

Резюме . Comfort Keys, если говорить о редакции Pro, является весьма функциональным решением для ускорения набора текста и работы за компьютером. Программа будет полезна при работе с шаблонами, редактировании, в повседневной работе. Есть общие с Punto Switcher и Key Switcher функции, которые позволяют быстро исправить текст. Гибкое переназначение горячих клавиш и широкий выбор действий.

[+] Отличная функциональность
[+] Широкий выбор действий для горячих клавиш
[+] Работа с шаблонами
[−] Неудобный интерфейс

Hot Keyboard

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

Главное окно программы представляет собой список, в который можно добавить нужный набор действий. Есть сходство с интерфейсом Key Manager, хотя в Hot Keyboard нельзя группировать действия по созданным вручную категориям и выбирать профили.

Макросы делятся на 3 категории. В общую категорию входят такие действия, как открытие страниц, создание меню, приложений, файлов, функции поиска, а также запись нажатий кнопок. Отдельно необходимо отметить вставку текста - как и положено, с выбором формата и поддержкой специального содержания: даты, времени, переменных и даже файлов. С помощью макросов можно настроить автозамену текста.

Настройки каждого макроса доступны в отдельном окне. Для выполнения действия можно задать условие или настроить запуск по расписанию. В Hot Keyboard достаточно мощная система скриптов. Переменные, функции, операторы описаны в . В AutoHotkey написание сценариев было практически единственным способом реализации возможностей, здесь же «все средства хороши», и сценарии можно использовать в дополнение к действиям. Собственно, третья категория макросов затрагивает специфические функции построения сценариев: настройка задержки выполнения, работа с выражениями, запуск другого макроса.

Резюме . Утилита Hot Keyboard расположена к пользователю за счет диалогов настройки с опциями. Изучение языка синтаксиса вовсе не обязательно. Впрочем, если нужна большая гибкость и функциональность, сценарии окажут существенную помощь.

[+] Создание сценариев
[+] Гибкая настройка действий
[+] Определение условий для запуска макросов

Сводная таблица

Программа AutoHotkey Punto Switcher Key Switcher Key Manager Comfort Keys Hot Keyboard
Разработчик Chris Mallet и др. Яндекс InteLife Solutions Atnsoft Comfort Software Group Imposant
Лицензия Бесплатная Бесплатная Бесплатная / корпоративная Платная (от 920 руб.) Платная (от 390 руб.) Бесплатная (некоммерческая) / платная (бизнес, от $29,95)
Русскоязычная локализация + + + + +
Написание скриптов (макросов) + + + +
Автозамена + + + +
Поддержка буфера обмена + + + + +
Назначение горячих клавиш + + + + + +
Автопереключение раскладки + + + (макрос)
Автоисправление ошибок + +

Хочу показать и рассказать о небольшой программке, которая принесла пользу.

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

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

В итоге получилось вот что:

Кому интересно, подробности ниже

Предупреждение

Я не претендую на звание гуру питона, поэтому в коде (и я почти уверен в этом) присутствуют забивания гвоздей микроскопом и прочие нелепости.


Вместе с другом сделали постановку задачи:

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

Это помогает выработать рефлекс смотреть на монитор во время печати на клавиатуре.

Главные требованиями к программе:

  1. Реализовать её очень быстро;
  2. Показывать нажатые клавиши в режиме реального времени;
  3. «Переключать раскладки» в окне при переключении языка клавиатуры;
  4. Производить настройку программы через текстовый конфигурационный файл.
В процессе написания также добавились:
  1. Режим «залипания» последней нажатой клавиши (помогает сообразить куда нажимать пальцами дальше);
  2. Работа с клавишей shift;
  3. Возможность пометки цветом позиций для пальцев на клавиатуре;
  4. Возможность настройки шрифта;
  5. Возможность настройки ширины кнопок;
  6. Автоматическое сокрытие содержимого окна при наведении мышки.
На момент появления программы уже имелся опыт работы с Tkinter, работы с несколькими потоками. Плюс, по роду деятельности приходится бывать и сисадмином, поэтому работа с командной строкой была не чужда.

Общее описание внутренностей программы:

Для чтения клавиш используется найденная в google строчка на bash, позволяющая читать клавиши, нажимаемые на клавиатуре через утилиту xinput. Данный способ выбран в угоду пункту 1 требований. Процесс чтения символов запускается в отдельном потоке. Так же реализовано и чтение языка раскладки (опять таки пункт 1). Выдача информации о нажатых кнопках производится в очередь. Работа с очередью в главном окне программы производится путем периодического вызова функции periodicCall. Таким образом два потока пишут в очередь, один поток читает.
Завершение работы программы производится своеобразно - через статусные переменные в потоках.

Работа с настройками программы

Настройки программы загружаются и хранятся в экземпляре класса ConfigManager. Чтение из главноего текстового файла настроек производится с помощью ConfigParser . Данный модуль позволяет использовать похожий на INI формат конфигурационных файлов. В конструкторе класса производится проверка существования конфигурационного файла, расположенного по пути "~/.key_trainer/program.conf". Если его нет, программа читает файл program.conf, расположенный в текущей папке с программой.

Немного кода

import os ... filename="program.conf" home = os.path.expanduser("~") if os.path.isfile(home+"/.key_trainer/"+filename): filename=home+"/.key_trainer/"+filename ...


ConfigParser - замечательный модуль. Можно считать названия всех секций, а также считать ключи с их значениями внутри секций как кортежи (tuple). Так, например, реализовано считывание названий секций, и ключей в секции «KEYBOARD SETTINGS».

Еще немного кода

from ConfigParser import RawParser ... myParser=RawConfigParser(allow_no_value=True) myParser.read(path_to_file) # Получаем секции self.sections = myParser.sections() # Используем генератор чтобы вытащить ключи, заданные в секции KEYBOARD SETTINGS keyboard_settings_keys=


Помимо главного конфигурационного файла есть второй не менее важный - «keyboard.conf». Он используется для настройки отображаемых кнопок, а именно кода кнопки, текста на кнопке (с шифтом и в раскладках), положения кнопки. Убирая/добавляя записи в этот файл можно менять количество и качество кнопок (и строк с кнопками) в главном окне программы.

Формат записей в keyboard.conf

[код кнопки]:"[строчной символ в английской раскладке],[заглавный символ в английской раскладке],[строчной символ в русской раскладке],[заглавный символ в русской раскладке]":[номер строки кнопки],[номер столбца кнопки]

Вот несколько записей для примера:

24:«q,Q, й, Й»:3,2
25:«w,W, ц, Ц»:3,3
26:«e,E, у, У»:3,4
27:«r,R, к, К»:3,5

Чтение символов с клавиатуры

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

Чтение символов с клавиатуры производится в два потока. Почему два - потому что на практике так оказалось проще. Один поток читает раскладку клавиатуры, второй нажатые кнопки. Оба потока порождаются через Thread , в каждом потоке затем через subprocess Popen будет запущен соответствующий процесс чтения клавиш или раскладки. Для чтения выходного потока процесса используется subprocess.PIPE . Как только текст пришел в поток выхода процесса, он читается, обрабатывается, и, если нужно, ставится в очередь Queue :

Код

from subprocess import Popen from subprocess import PIPE import threading ... def doReadingKeys(self): self.myProcess=Popen("xinput list "+"|"+" grep -Po \"id=\K\d+(?=.*slave\s*keyboard)\" "+"|"+" xargs -P0 -n1 xinput test",shell=True,stdout=PIPE) while self.proc_started: symbol=self.myProcess.stdout.read(1) if symbol in press_release_dict: symbol_pressed=press_release_dict while symbol!="\n": symbol=self.myProcess.stdout.read(1) if symbol.isdigit(): symbol_index=symbol_index*10+int(symbol) self.myQueue.put((symbol_index,symbol_pressed)) symbol_index=0 ... keysThread=threading.Thread(target=self.doReadingKeys) keysThread.start() ...


Чтобы завершить поток используется переменная класса proc_started. При закрытии главного окна программы она устанавливается в значение False, производится выход из цикла чтения, выполняется завершения процесса чтения клавиш через terminate, а затем wait - для того чтобы дождаться пока процесс завершился.

Замечание

У данного подхода есть один недостаток - разблокировка(а значит и дальнейшее завершение потока и процесса) метода read, который внутри цикла не произойдет до тех пор, пока что-нибудь не считается с выходного потока процесса myProcess. Но на практике проблем из-за этого не возникало, так как нажимаем мы на кнопки часто.

Графический интерфейс

Для того чтобы быстро сделать графический интерфейс использовался Tkinter . Данный модуль позволяет легко работать с простыми графическими интерфейсами (окна, кнопки, галочки и т.п.). Класс окна GuiManager на вход, помимо других параметров, принимает класс конфигурации. Из неё берутся настройки кнопок, затем эти кнопки создаются и добавляются на главное окно программы.

Код добавления кнопок

from Tkinter import * import tkFont ... self.buttonFont=tkFont.Font(family=config.font_name,size=config.font_size) self.boldUnderscoredButtonFont=tkFont.Font(family=config.font_name,size=config.font_size,weight="bold",underline=1) for row_index in xrange(1,config.getNumOfRows()+1): self.gui_rows=Frame(master) self.gui_row_buttons= for button_num in xrange(1,config.getNumOfKeysInRow(row_index)+1): newButton=Button(self.gui_rows) if self.config.padx!=-1: newButton.config(padx=self.config.padx) if self.config.pady!=-1: newButton.config(pady=self.config.pady) if (row_index,int(button_num)) in config.key_pos_to_index: self.gui_all_buttons] = newButton self.gui_row_buttons.append(newButton) newButton.pack(side=LEFT) self.gui_rows.pack() self.reconfigure_text_on_buttons(config,shift_pressed=0,lang=0) ...


При добавлении кнопок на форму попутно создаются словари с ключами номера строки и значениями - объектом Frame в каждый из которых помещаются кнопки. Как видно из кода, кнопки формируются построчно, по завершении формирования строки виджет кладется в окно методом pack().

Помимо прочего, в класс добавлена функция processQueue, которая со стороны потока графического интерфейса достает из очереди кортежи (tuple) с событиями нажатых кнопок и изменяет внешний вид кнопок - «нажимает» их, «переключает раскладки» и «нажимает» кнопку shift:

Обработка очереди со стороны графического интерфейса

def processQueue(self): while not self.queue.empty(): msg = self.queue.get(0) if msg == -1: # -1 message is for changing language self.currentLang=int(msg) if self.config.debug: print "Changed lang!" self.reconfigure_text_on_buttons(self.config,0,msg) if msg in self.gui_all_buttons: if msg in self.shift_key_codes: self.reconfigure_text_on_buttons(self.config,msg,self.currentLang) if msg==1: self.gui_all_buttons.config(relief=SUNKEN) if self.sticky_key_behaviour: if self.last_sticky_button!=msg: self.gui_all_buttons.config(relief=RAISED) self.last_sticky_button=msg else: if not self.sticky_key_behaviour: self.gui_all_buttons.config(relief=RAISED) if self.config.debug: print msg


Класс GuiManager инкапсулирован внутрь класса ThreadedClient, который принимает на вход главный поток Tkinter и выставляет вызов функции разбора очереди каждые 20 миллисекунд:

Класс, инкапсулирующий GuiManager

class ThreadedClient: def __init__(self, master): self.master = master self.config=ConfigManager() self.keyTrainer=keyboardStatus(self.config) keyTrainer=self.keyTrainer master.protocol("WM_DELETE_WINDOW", self.kill_and_destroy) self.guiManager=GuiManager(master,self.config,keyTrainer.myQueue,keyTrainer) keyTrainer.begin_scan() self.running = 1 self.periodicCall() def kill_and_destroy(self): self.running = 0 self.keyTrainer.stop_scan() if self.config.debug: print "Stopping scan..." self.master.destroy() def periodicCall(self): self.guiManager.processQueue() if not self.running: # import sys # sys.exit(1) self.kill_and_destroy() self.master.after(20, self.periodicCall)

Несколько картинок

Общий вид окна программы:

Нажата левая клавиша Alt:

Окно программы после перенастройки:

При наведении курсора мыши окно программы «уезжает» под заголовок (цвета, которые остаются на белом фоне - артефакты сжатия ролика):

Нажатие клавиши shift и переключение языка:

Заключение

Что же получилось в итоге? А получилась неплохая программа для того, чтобы помогать людям учиться печатать вслепую на клавиатуре. Да, у нее есть недостатки и неэффективности, а именно:
  • Запускаемые со стороны процессы с командами bash для чтения символов;
  • Жестко заданные языки (только русский и английский);
  • Квадратный интерфейс;
  • Работает на Ubuntu и Linux Mint (MATE), на других дистрибутивах не опробована;
Код можно скачать/посмотреть здесь:

Клавиатура служит для ввода информации в компьютер и подачи управляющих сигналов. Она содержит стандартный набор алфавитно-цифровых клавиш и некоторые дополнительные клавиши - управляющие и функциональные, клавиши управления курсором, а также малый цифровой блок клавиатуры.

Общие понятия

Точка ввода информации (курсор) - мерцающий на экране монитора символ «|», указывающий позицию, в которой будет отображаться следующий вводимый с клавиатуры знак.

Клавиатура имеет встроенный буфер - промежуточную память малого размера, куда помещаются введённые символы. Все символы, набираемые на клавиатуре, немедленно отображаются на мониторе в позиции курсора. Однако если система занята, то символы могут сразу не выводится на экран, а помещаться в буфер клавиатуры для того, чтобы после освобождения системы отобразить введённые символы на экране. В случае переполнения буфера клавиатуры нажатие клавиши будет сопровождаться звуковым сигналом, означающий, что символ не введён (отвергнут).

Наиболее распространена сегодня 105(7) - клавишная клавиатура с раскладкой клавиш QWERTY (читается «кверти»), названная так по обозначениям клавиш, расположенных в верхнем левом ряду алфавитно-цифровой части клавиатуры.

Алфавитно-цифровые клавиши

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

Язык можно сменить и при помощи клавиатуры. Для этого обычно используется одно из двух сочетаний клавиш: Alt (слева) + Shift или Ctrl + Shift .

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

Функциональные клавиши

В верхней части клавиатуры расположены 12 функциональных клавиш. F1-F12 . Функциональные клавиши в различных приложениях могут иметь различное значение. Приведём пример действий, которые выполняет клавиша F5 .


Отметим, что во многих программах для получения помощи (подсказки) задействована клавиша F1 .

Управляющие клавиши

Управляющие клавиши имеют следующее назначение:

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

Esc (escape - выход) клавиша для отмены каких-либо действий, например, для выхода из диалогового окна, из меню и т. п.

Клавиша Alt используется для выбора команды в меню активного приложения без помощи мыши. Нажав клавишу Alt, пользователь получает доступ к первому пункту меню активного приложения. Дальнейший выбор команды осуществляется при помощи клавиш перемещения ↓ ← → и нажатия клавиши Enter . Клавиша Alt широко используется в комбинации с другими клавишами. Приведём некоторые из них:


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


Shift (регистр) - обеспечивает смену регистра клавиш (верхнего на нижний и наоборот). Например, нажатие клавиши Shift совместно с алфавитной клавишей обеспечивает ввод прописных букв.


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

Delete (удалять) - удаляет символ с позиции правее курсора (точки ввода информации).

Back Space удаляет символ перед курсором, т. е. левее позиции ввода информации. Напомним, что клавиша Back Space расположена на клавиатуре выше клавиши Enter .

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

Caps Lock - фиксирует верхний регистр, обеспечивая ввод прописных букв вместо строчных . Отметим, что клавиша Caps Lock работает только с буквенными клавишами и не влияет на ввод специальных знаков.

Scroll Lock - используется только в электронных таблицах для прокрутки информации без изменения активной ячейки.

Print Screen - обеспечивает копирование информации , отображаемой в текущий момент на экране в Буфер обмена .

Длинная нижняя клавиша без названия - предназначена для ввода пробелов (для разделения слов).

Клавиша с изображением эмблемы Windows служит для отображения Главного меню Windows. Кроме этого, используется для выполнения некоторых команд, список которых приведём в таблице ниже:

Сочетание клавиш Назначение
Windows + Break Открытие диалогового окна Свойства системы
Windows + D или Windows + М Свертывание всех окон
Windows + Shift + М Восстановление свернутых окон
Windows + E Открытие окна Мой компьютер
Windows + F Поиск файла или папки
Ctrl + Windows + F Поиск компьютеров
Windows + F1 Вывод справки Windows
Windows + L Блокировка компьютера при подключении к домену или переключение пользователей, если компьютер не подключен к домену
Windows + R Открытие диалогового окна Выполнить
Windows + U Открытие диспетчера служебных программ

Клавиша служит для вызова контекстного меню выделенного объекта, т. е. заменяет щелчок правой кнопкой мыши на выделенном объекте.

Клавиши перемещения

Клавиши перемещения имеют следующее назначение.

Клавиши ↓ ← → служат для перемещения курсора соответственно вверх, вниз, влево и вправо на одну позицию или строку.

Home и End - обеспечивают перемещение курсора в первую и последнюю позицию строки, соответственно.

Page Up и Page Down - обеспечивают перемещение по тексту на одну экранную страницу назад и вперёд, соответственно.

Малый цифровой блок клавиатуры

Малый цифровой блок клавиатуры может использоваться в двух режимах: для ввода чисел и для управления курсором . Переключение этих режимов осуществляется клавишей Num Lock .

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

Как правило, есть две основные причины, из-за которых пользователи используют виртуальные клавиатуры вместо настоящих.

Доступность

Использование клавиатуры в качестве замены:

  • Пользователь не может использовать настоящую клавиатуру. Например, наличие у людей устройств, которые не подразумевают физического наличия клавиатуры, такие как коммуникаторы и устройства с сенсорными экранами.
  • Поиск альтернативного способа ввода текста. Например, для того чтобы была возможность набрать текст на своем родном языке (например, на реальной клавиатуре нет наклеек родного языка). Или, например, проблемы с существующей клавиатурой (сломался драйвер в системе, блокировка устройства и т.д.).

Безопасность

Для повышения уровня безопасности и защиты от различного вредоносного программного обеспечения (например, от клавиатурных шпионов):

  • Безопасные экранные клавиатуры станут хорошими помощниками в деле повышения уровня безопасности при использовании общественных, незащищенных или подозрительных компьютеров (например, учебные классы, интернет-кафе и т.д.).
  • Безопасные виртуальные клавиатуры могут помочь защитить ваш компьютер от вредоносного программного обеспечения следующих типов:
    • Кейлоггеры (клавиатурные шпионы) - фиксируют все нажатия клавиш
    • Логирование экрана - создают скриншоты экрана с регулярными периодами или по каким-либо определенным действиям пользователя
    • Логирование буфера обмена - контролируют содержимое буфера обмена
    • Фиксация положения курсора мыши - сохраняют все координаты, где были зафиксированы клики мышкой. В основном, этот тип используется для взлома банковских экранных клавиатур.
    • Захват значений в текстовых полях - получают все значения из текстовых полей, даже скрытых маской пароля (всем знакомые ****)

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

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

Обзор бесплатных экранных/виртуальных клавиатур

Экранная клавиатура Click-N-Type отличный аналог коммерческим предложениям

Microsoft On-Screen Keyboard

Поддержка трех способов ввода. Начиная с Windows 7 автоматическое переключение языков при смене активного окна.
Нельзя изменить размер клавиатуры (исправлено начиная с Windows 7).
-------------
211KB 2.0 Unrestricted freeware Windows
Входит в состав Windows
Похожие статьи