Экспериментальная программа для продвинутого ввода символов с клавиатуры

в 22:31, , рубрики: интерфейсы, клавиатура, концепт, символы, Софт, сочетания клавиш, типографика, метки: , , , ,

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

Всякий раз, когда я завожу речь о ней, меня спрашивают, похоже ли это на Punto Switcher. Отвечаю: совсем не похоже, эта программа решает другие задачи. Также упоминают всякие «типографские раскладки». Отвечаю: с помощью этой программы можно, помимо прочего, устроить всё то же самое, что делают эти «раскладки». Но главное всё-таки в другом.

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

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

Моя профессия — литературно-технический редактор публикаций в Интернете. Я работаю с обычным текстом на русском языке и иногда — на английском. Пишу и редактирую текст в простом текстовом редакторе, в Word’е и Visio, в почтовом клиенте, в интерфейсе Evernote, в Skype и ICQ, в разных веб-приложениях и ещё чёрт знает где. Также приходится работать с кодом HTML и CSS — в основном для того, чтобы верстать тексты для сайтов. Изредка сталкиваюсь с программированием — например, на JavaScript или Python.

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

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

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

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

Если бы проблема была только в этих скобках, я бы так и продолжал мечтать. Но такая же ситуация — со многими другими парными символами: [], {}, <>, '', "", «», „“, “”.

«Тоже мне проблема,— скажете вы.— В любом текстовом редакторе, не говоря уже о серьёзных IDE, можно настроить хоткеи и радоваться». До того, как появилась описываемая программа, я так и делал. Но приходилось настраивать одни и те же сочетания клавиш отдельно в каждой программе — в текстовом редакторе, в почтовом клиенте, в Word’е и так далее. При переустановке программ требовалось либо настраивать всё заново, либо возиться с переносом конфигурации. Наконец, в некоторых важных программах — например, в браузерах — этого и вообще нельзя сделать.

Поэтому я хотел решения, которое работает на уровне всей операционной системы — наподобие стандартных сочетаний клавиш типа Alt + цифры на цифровой панели (например: Alt + 1, Alt + 21, Alt + 249, Alt + 0215). Всюду, где вы вводите текст (будь то поле запроса в Яндексе, текстовый слой в Photoshop’е или адресная строка), сочетание Alt + 1 даст вам символ . Я хотел, чтобы мои скобки и кавычки работали так же универсально.

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

В качестве побочного эффекта мы получили удобный ввод не только стандартных скобок и кавычек, но и символов, которых нет на клавиатуре: «», „“, “”.

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

  • неразрывный пробел,
  • мягкий перенос,
  • неразрывный дефис,
  • длинное тире,
  • минус,
  • апостроф,
  • многоточие.

Ещё раз сформулирую важные преимущества перед «типографскими раскладками»:

  • Можно самому выбрать, какие символы связывать с сочетаниями клавиш. Например, я настроил сочетания для символов , и .
  • Можно определять почти любые сочетания клавиш. Например, мне удобно, чтобы вводилась по Ctrl + `,  — по Alt + →, а „“ — по Ctrl + Shift + 9. Другие пользователи программы могут настроить эти же сочетания для других символов, либо другие сочетания для этих символов, либо другие сочетания для других символов — как кому удобно.
  • Можно связывать с сочетанием клавиш не только один символ, но и строку произвольной длины. Кроме скобок, я таким образом настроил смайлики: скажем, по Ctrl + 6 у меня вставляется :-).

Но это было далеко не всё. Обычно после того, как я ввёл две скобки (или кавычки), я нажимаю клавишу ←, чтобы поставить курсор между ними и напечатать внутреннее содержание. Я опять подумал: зачем каждый раз нажимать стрелочку, если можно заставить мою программу саму переводить курсор? Пускай она делает так, чтобы каждый раз после ввода парных символов курсор сам собой ставился между ними, и чтобы я мог сразу печатать текст внутри скобок или кавычек.

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

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

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

Впрочем, поделюсь некоторыми соображениями.

Поскольку вся петрушка началась с обыкновенных круглых скобок, то именно про них я впервые задумался, каким «хоткеем» их вызывать. Понятно, что это должно быть сочетание не более чем из двух клавиш, иначе теряется экономия движений, ради которой всё затевалось. То есть, Shift + что-то, или Ctrl + что-то, или Alt + что-то. Может быть, Win + что-то.

Тут проблема была в том, что большинство удобных для нажимания сочетаний уже заняты чем-нибудь нужным — либо глобально (Ctrl + S, Alt + F4), либо в отдельных программах (Alt + X в Word’е, Ctrl + G в Photoshop’е).

Но, с другой стороны, зачем мне теперь обычное сочетание клавиш для открывающей скобки (Shift + 9)? Пускай именно по этому сочетанию вместо одной скобки печатаются обе, да ещё и курсор переводится. Одиночная открывающая скобка бывает мне нужна крайне редко; ради таких единичных случаев можно позволить программе ввести обе скобки, а потом вручную стереть лишнюю.

Так же я поступил с остальными скобками и кавычками: просто назначил им те же сочетания клавиш, которые в нормальных условиях вводят одну открывающую скобку или кавычку. Что касается символов, отсутствующих на клавиатуре, я решил так:

  • «» — Ctrl + 9 (там же, где скобки, только с Ctrl вместо Shift)
  • „“ — Ctrl + Shift + 9 (редко требуется; можно назначить трёхклавишное сочетание)
  • “” — Alt + Shift + 9

Ещё раз повторю, что это не жёстко зафиксированные в программе горячие клавиши, а мои собственные настройки, о которых я рассказал в качестве примера. А то ведь кто-нибудь по древней хабрической традиции напишет комментарий типа «а у меня Ctrl + 9 совсем для другого предназначено; следовательно, автор дебил и наверняка пишет на PHP». Нет же, прелесть программы в том, что вы можете задать те клавиши, которые удобны лично вам и не мешают другим настройкам вашего софта.

И на этом возможности программы не заканчиваются. После того, как она научилась делать всё вышеизложенное, мне захотелось, чтобы она ещё заключала выделенные фрагменты в парные конструкции. Например, если мне захотелось взять в скобки или кавычки уже напечатанное слово — я его выделяю, нажимаю своё Ctrl + 9, и вокруг слова ставятся эти самые скобки или кавычки.

Или, что ещё более актуально,— проставить тэги гиперссылки. Например, я выделяю фрагмент текста, нажимаю ещё какое-нибудь сочетание клавиш — и вокруг фрагмента ставятся тэги <a href=""> … </a>. Да ещё и курсор после этого сам переводится между кавычек, чтобы можно было сразу вписать адрес. В текстовом редакторе, браузере, Evernote, скайпе и где угодно. Красота, да и только.

То же самое касается других тэгов, которые нужны мне особенно часто: p, nobr, img (с кучей атрибутов), span, strong, em.

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

Из того же значка можно вызвать простенький интерактивный конфигуратор сочетаний клавиш и настроить там всё, как вашей душе угодно.

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

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

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

Итак, суммирую ключевые возможности нашей программы:

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

По-моему, неплохо для начала.

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

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

Программа требует максимально административных прав и не дружит с UAC. Если не выключить UAC, она криво установится и не будет работать. Ну, увы; прототип есть прототип. Между прочим, когда я впервые заикнулся об идее этой программы, некоторые знатоки пугали меня, что вообще невозможно написать такое, чтобы оно работало на уровне всей ОС.

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

Как проверить, работает или нет?

  • Посмотрите в панель уведомлений — там должен появиться соответствующий значок. Щёлкнув по нему, получаем меню с разными опциями.
  • Если предыдущая проверка прошла удачно, то откройте обыкновенный «Блокнот» и попробуйте понажимать сочетания клавиш, включённые в конфигурацию по умолчанию:
    • Shift + 9 — ()
    • Ctrl + 6 — :-)
    • Ctrl +  — <a href=""></a>

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

Даже если программа стартовала, она может удивить вас разными экивоками. Ну, например:

  • Прототип по-нормальному не тестировался нигде, кроме Windows 7 (x64). О том, как он ведёт себя под другими системами, есть только смутные слухи и подозрения. Например, под Windows XP, скорее всего, не взлетит; хотя, может быть, это зависит от сервис-пака; в общем, сами смотрите. Под 64-разрядными Vista и Windows 8, программа, вероятнее всего, работает так же, как под «семёркой». Под 32-разрядными версиями тоже должна работать; по крайней мере, программист в это свято верит.
  • Изредка эта штука отказывается устанавливаться и (или) запускаться по невыясненным мистическим причинам. Чаще всего помогает метод научного ресета: выключить и снова включить, деинсталлировать и снова установить. Или совсем по-взрослому: выключить, деинсталлировать и перезагрузиться, после чего установить и включить. На второй, третий или пятый раз может заработать.
  • Под виртуальными машинами она функционирует, гм, загадочно. Возможно, виртуальная машина мешает программе ловить сигналы от клавиатуры так, как она это делает под реальным железом.
  • В боевом режиме происходят спорадические сбои. Например, бывает, что я нажимаю Ctrl + , чтобы вставить гиперссылку, а программа вместо этого вставляет текущее содержимое буфера обмена или вообще какую-нибудь галиматью. Обычно это лечится, если повторить нужное сочетание клавиш 2–3 раза. На худой конец — переключиться в другое приложение (тот же «Блокнот») и пощёлкать там. На самый худой конец — перезапустить программу.
  • Перенос курсора не всегда работает так, как надо. При небольших перемещениях (как с теми же скобками) проблем почти не бывает, но прыжки на дальние дистанции (вроде гиперссылок) удаются не всегда. Например, курсор может приземлиться на 4–5 позиций дальше или ближе, чем нужно.
  • Проявляются отдельные косяки в офисных приложениях типа Word и Excel, особенно если там дико сложное форматирование. По-хорошему, для Office надо писать отдельные плагины; но для этого, опять же, нужно набраться энтузиазма.

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

Если у вас появятся вопросы по технической части программы — можно попробовать задать их программисту. Он бывает на «Хабрахабре» и знает об этой статье. С другой стороны, он человек скромный и светиться не любит (в отличие от тех, кто утверждал, что такая программа невозможна). Если захочет — придёт в комментарии и ответит.

Вот отсюда можно скачать.

Надеюсь, это моя последняя заметка на «Хабрахабре». Всем спасибо за компанию.

Автор: megamops

  1. bravo:

    файл выдает 404

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js