+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 91.69 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

Расширяем функциональность клавиатуры

16.11.2012 16:17
Corwal

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

Итак, рассмотрим принцип работы клавиатуры, а именно нажатие клавиши. Само нажатие состоит из трех событий - непосредственно нажатие, удерживание и отпускание клавиши. При этом, при вводе символа используется только нажатие, удерживание в большинстве случаев играет роль только для модификаторов Shift, Ctrl, Alt, а также для навигации, удаления и некоторых других системных клавиш. Конечно есть еще автоповтор, который для символьных клавиш используется крайне редко (как показывает практика, при необходимости набрать один и тот же символ, пользователь скорее нажмет несколько раз одну и туже кнопку, чем воспользуется автоповтором). В таком случае, событие удерживания клавиши можно использовать в более полезных целях - а именно при удерживании клавиши превратить ее в модификатор, который сможет создать дополнительные комбинации клавиш. К слову, удерживание клавиши нашло себе применение в мобильных клавиатурах. Так, например в Smart Keyboard для Android при удерживании буквы на экранной клавиатуре, вы получите вставку альтернативного символа либо числа (к примеру, вместо "й"-"1", "ц"-"2", "р"-"*" и т.д.) что довольно удобно в условиях ограниченного экранного пространства.

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

Рассмотрим это на более наглядном примере.

image

На рисунке изображена цифровая раскладка на символьных клавишах. Если удерживая клавишу "f" (клавиша смены раскладки) нажать и отпустить "j", мы получим вставку символа "4". При использовании комбинации f-h получим нажатие клавиши ввода. Кстати при комбинации f-' (или а-э в русской раскладке) мы получим символ апострофа, независимо от использованной языковой раскладки (что довольно удобно, так как ни русская, ни украинская языковая раскладка не предусматривает наличие этого символа).
Приведем еще один более интересный пример:

Здесь уже изображена навигационная раскладка. Примечательным является то, что для активации раскладки может использоваться одна из четырех клавиш (hjkl). Так удерживая "j" мы просто активируем навигационную раскладку, удерживая "k" - активируем раскладку с эмуляцией нажатия Ctrl. Таким образом, нажимая в текстовом редакторе комбинацию j-a мы просто сместим курсор влево, k-a - перейдем к началу слова слева (эквивалент Ctrl+стрелка влево, можно также использовать Ctrl+j-a), h-a - выделим фрагмент текста от курсора, до начала слова слева (эквивалент Ctrl+Shift+стрелка влево). Вероятно вы уже успели заметить, что клавиши расположены для удобного нажатия при слепом наборе. Действительно, на практике подобный подход дает повышение удобства редактирования текста - пальцы не отдаляются слишком далеко от стартовых позиций, что уменьшает необходимость лишний раз передвигать руки по всей клавиатуре и увеличивает скорость редактирования текста.

Конечно же теория подкрепленная практикой выглядит куда более интересней, так что для реализации идеи было написано экспериментальное программное обеспечение, которое реализует описанные принципы работы для ОС Windows. Сама программа позволяет добавить одну из трех функций для выбранной клавиатурной клавиши:
1. Смена функциональной раскладки, как и описывалось ранее. Можно также сменить раскладку в режиме переключателя (toggle), когда первое нажатие клавиши включает заданную раскладку, второе - ее выключает.
2. Симуляция нажатия клавиатурной клавиши. Здесь все просто - задаем код клавиши, которая должна нажиматься вместо выбранной (нужную клавишу можно нажать в поле ввода, или вставить уже известный код). Можно также указывать коды мультимедийных клавиш (увеличить громкость, приостановить проигрывание, открыть калькулятор), тем самым, превратив даже обычную клавиатуру в мультимедийную.
3. Вставить фрагмент текста. Так нажатием всего одной кнопки можно вставить фрагмент текста. Кроме того в самом тексте допускается нажатие системных клавиш путем прописывания их имен в фигурных скобках. К примеру, использование такого текста: "return;{left}" вставит текст "return;" и передвинет каретку влево. "Без{enter}паники!" - вставит слово "Без" и с новой строчки "паники!". Ну а выполняя следующий текст: "42{backspace 2}" вы сделаете сразу две полезные вещи - ответите на главный вопрос жизни, и быстренько его удалите, чтобы никто не увидел. Более детальное описание использования системных команд можно найти в архиве с программой.

Кроме выше описанных раскладок в программе также предусмотрены раскладки для быстрой вставки текстовых смайликов и некоторые шаблоны для программирования. Так же клавиша CapsLock используется в режиме переключателя для функциональной раскладки, совмещающей в себе навигационные и цифровые клавиши изображенные на рисунках. Конечно же, все комбинации клавиш можно легко переназначить и добавить свои. Если часто приходиться набирать одни и те же варианты фраз, тогда довольно удобно использовать комбинации клавиш, которые обозначают две первых буквы фразы. Так комбинация r-e может вставлять слово "return", e-x - "exit", b-e - "begin" и т.д.

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

Скачать саму программу можно здесь, а исходники здесь

Рассмотрим принципы работы приложения. Средство разработки - Делфи 7. Для получения информации о событиях клавиатуры устанавливается низкоуровневый хук на клавиатуру (функция SetWindowsHookEx с параметром WH_KEYBOARD_LL). Подобный подход позволяет получать события WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP, виртуальный код клавиши, а также информацию о том является ли это событие результатом нажатия клавиши на клавиатуре или программной вставки. Ну и конечно же исключить подальшую обработку события. Здесь следует заметить, что слишком тяжелый код в обработке данного хука, может привести к подтормаживаниям при вставке символов. Получив сообщение от клавиатуры, первым делом смотрим кто его послал - если сообщение было сгенерировано самой программой, то пропускаем его дальше в систему. Если же пришло сообщение WM_KEYDOWN (или WM_SYSKEYDOWN) то смотрим стоит ли его блокировать согласно конфигурациям программы. При блокировании запоминаем нажатую клавишу, а также системные клавиши (Shift, Ctrl, Alt) - это необходимо в случае, когда комбинация при смене раскладки не сработала и необходимо возобновить заблокированные сообщения (со всеми системными модификаторами). В случае если согласно текущей раскладки сработала комбинация клавиш - вставляем свои события клавиатуры. Для отправки своих сообщений клавиатуры используется функция SendInput.

Ну и как альтернативный вариант расширения функциональности клавиатуры можно использовать программу The Microsoft Keyboard Layout Creator которая помогает создать свою языковую раскладку, включающую в себя расширенные комбинации клавиш с Shift, Ctrl, Alt, AltGr и даже CapsLock.

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

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

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

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



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года