Switch It!
  Переключатель раскладок клавиатуры

Краткий курс истории Switch It!

“Можно простить человеку создание полезной вещи, если только он ею не восторгается. Но того, кто создает бесполезную вещь, может оправдать лишь безмерное восхищение своим творением”.

Оскар Уайльд     

Прелюдия

Осмелюсь предположить, что всякий человек, имеющий на руках пальцы, а в голове – высшее образование, рано или поздно оказывается перед клавиатурой компьютера. И что он видит? Удивительно, но даже на такой простой вопрос невозможно дать простого ответа. Приходится уточнять. Возьмем, к примеру, настоящего американца. Пусть это будет усатый житель Техаса в сапогах со шпорами и в шляпе с полями. Впрочем, даже и с непокрытой головой он все равно увидит перед собой сотню клавиш, и на них – привычные с детства буквы его родного алфавита. Именно такими буквами на тамошних денежных знаках убедительно написано “in God we trust”. А теперь представьте настоящего россиянина. В сапогах без шпор и в шляпе без полей. Что видит он? Ему дано увидеть гораздо больше. И не в силу удивительной прозорливости и мудрости, которой Господь щедро одарил нас с вами, дорогие друзья. А просто оттого, что на наших с вами клавишах помимо уже упомянутых символов, нарисованы еще и родные буковки, из которых складывается наш с вами, понятный только нам с вами, язык, а также надпись на денежных знаках – “подделка государственных казначейских билетов преследуется по закону”. К чему это я? К тому, что есть отличия. И всегда были. И ничего с этим не поделаешь.

Предыстория

Не знаю, как вы, уважаемые читатели, а я столкнулся с проблемой двуязычности компьютера, когда впервые сел за IBM PC XT где-то в 89-м году прошлого века. Тогда, в прошлом веке, IBM PC XT слыл современным компьютером, а MS-DOS 3.0 – современной операционной системой. Надо сказать, что русских версий MS-DOS в ту пору еще не было, а необходимость набирать тексты на русском языке была. И, естественно, нужно было как-то переключаться между раскладками клавиатуры. И я таки переключался, благо, по рукам ходила прорва разных “переключалок”. Из всего этого многообразия я выбрал “Бету” и неизменно ей пользовался. Думаю, многие из тех, кто пережил те времена, с благодарностью вспоминают Антона Чижова, который ее написал. А вообще, нехитрая проблема переключения раскладки была довольно популярна в народе. Я до сих пор помню разговоры типа: “Этот драйвер не катит. Он сидит на 16-ом прерывании, а MultiEdit сам читает шестнадцатым, а не двадцать первым, и поэтому в нем не переключается. По уму нужно садится на девятое…” Конечно, все уважающие себя программисты садились на девятое, и это прекрасно работало. И все были счастливы.

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

Итак, в конце 80-х я учился в Питере в Политехническом институте на кафедре прикладной математики на первом или втором курсе. И был у нас преподаватель Александр Борисович Смирнов, который читал подробный курс лекций по MS-DOS. Курс был с “лабами”, на которых мы упражнялись с небогатыми возможностями этой операционной системы. И вот, как-то раз я получил практическое задание – написать командный файл, который являлся бы полным функциональным аналогом стандартной команды “copy file1 file2” и при этом выдавал все диагностические сообщения на чистом русском языке. Фокус тут состоял в том, что весь MS-DOS, включая команду “copy”, тогда был англоязычным. Но поскольку годы были молодыми, кровь горячей, а мода диктовала необходимость худо-бедно владеть ассемблером, решение этой унизительной задачи пришло сразу. Не долго думая, я решил, что сейчас мы быстренько напишем резидентную программку, которая будет загружаться в начале командного файла, фильтровать весь вывод на экран и вместо английских фраз выводить соответствующие русские. До сих пор помню, что я сел и тут же сляпал программку, которая сидела на 21-ом прерывании и перехватывала вывод на экран. Но что-то не заладилось… А именно, не ловилось ничего в ее сети. И не выводилось ничего. Очевидно, что времени на вдумчивый разбор ситуации не было, и я сразу решил, что, по-видимому, нужно копать глубже и садиться на 10-е прерывание. Логика была простая: “Ага! Не хочешь ловиться через DOS – поймаем через BIOS”. Не дрогнув, я опустился ниже и сел на десятое. Ясно, что и тут ничего не вышло. Только система начала катастрофически виснуть и падать. Но отступать было некуда. Время сдачи сильно подпирало. И тогда мне явилось элегантное решение. Я написал две коротких программки. Одна запускалась в начале файла перед вызовом команды “copy”, другая – в конце. Первая открывала COMMAND.COM и варварски вписывала в него русские фразы (подогнанные по длине – на это ума хватило) прямо поверх англоязычных сообщений об ошибках. Вторая – делала то же самое, только наоборот – затирала русские фразы и восстанавливала оригинальные. Естественно, никаких промежуточных данных не сохранялось. Все смещения строк в файле COMMAND.COM были жестко зашиты в обе программы. И это великолепно работало на моей машине. Я потер руки и побежал сдавать работу. Скажите мне, мог ли я подумать, что на кафедральном компьютере Смирнова окажется MS-DOS не 3.0, а 3.3 с другим файлом COMMAND.COM и с другими смещениями в нем? Конечно, нет! В деловом мире такие обстоятельства как раз и называются форс-мажором. Эх, а дальше произошло очевидное – я зацепил какие-то жизненно важные органы тамошнему “комманд кому”, и он умер на месте. Компьютер сразу повис. Все преподаватели засуетились. Оказалось, что ни у кого под рукой нет системной дискеты… В общем, мое появление вызвало в академических кругах определенное оживление. А что до задачи, так, оказывается, она решалась элементарно. Нужно было просто перенаправить вывод команды “copy” на псевдоустройство NUL, затем проанализировать переменную среды ERRORLEVEL и через команду “echo” выдать соответствующее сообщение на русском языке. М-да… Но ведь мы не ищем простых путей. Впрочем, мы отвлеклись…

Надо ли говорить, что именно в те времена зародились и вошли в обиход такие, говоря современным языком, эргономичные способы переключения раскладки, как “правый контрол”, “два шифта” и “капс лук”. А вот ортопедически неприемлемые “альт-шифт” и “контрол-шифт” можно было увидеть только в плохом сне. Но сны сбываются. И хорошие, и плохие…

Время летело. Бум информационных технологий нарастал. И, долго ли, коротко ли, на свет появилась Window 3.1, которая постепенно проникла в массы и практически полностью вытеснила MS-DOS. И опять до появления русской версии Windows 3.x весь народ пользовался созданными в России системами русификации, такими как CyrWin и ParaWin. Эти и другие продукты унаследовали все лучшее (с точки зрения эргономики), что было еще при DOS’е. Поэтому в части набора двуязычных текстов переход к Windows никакой аллергии не вызывал. Справедливости ради следует отметить тот факт, что в стандартную поставку русской версии Windows входил более или менее приличный переключатель раскладок клавиатуры. По крайней мере, он поддерживал наиболее популярные в России способы переключения, например “правый контрол”. Правда, индикатор у него был ужасно неудобный и громоздкий. Он болтался по экрану как неприкаянный, и найти для него подходящее место было невозможно. Собственно, это было не так уж и страшно, ибо все гурманы продолжали использовать привычные CyrWin, ParaWin и компанию. Пока не наступил 1995 год.

Завязка

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

При всем уважении к той части Windows 95, которая отвечает за поддержку многоязычности, я не могу сказать, что сам переключатель раскладок мне страшно понравился. “Вы знаете, Шура, как я уважаю Бендера… Но Бендер – осел!” Честно говоря, впервые столкнувшись с какой-то лохматой бета-версией Windows 95 и попав туда, где настраиваются параметры работы с клавиатурой, я испытал некоторое удивление. Не то чтобы я вожделел увидеть там возможность переключения раскладок родной клавишей “контрол”. Напротив, за всю предыдущую жизнь я настолько к этому привык, что проблема эта меня вообще никак не занимала. Да и проблемы-то как таковой не было. И у меня даже не возникало сомнений, что сейчас я открою окошко, и все будет именно так, как это было всегда. Но не тут-то было.

В этом месте необходимо оговориться. Чувствую я, что все эти рассуждения напоминают пылкий монолог человека, жаждущего поделиться своими навязчивыми идеями с коллегами по палате в больнице имени Скворцова-Степанова. Так вот, я – нормальный человек, дорогие читатели. На клавиатуре компьютера нет ничего, что вызывало бы у меня болезненную привязанность. У меня нет проблем с суставами, и я могу сколь угодно причудливым образом комбинировать пальцы рук, нажимая на клавиши. И вообще я быстро адаптируюсь ко всему новому и не придаю значения мелким бытовым неудобствам. А все это я пишу с единственной целью – подвести базу под свое творение. Причем, постфактум. Иными словами, я пытаюсь убедить вас в том, что в далеком 1995 году ситуация в России и на международных рынках программного обеспечения полностью созрела для появления такого продукта как Switch It! Ну а если кому-то кажется, что этот исторический экскурс, равно как и существо вопроса, не стоят и выеденного яйца, так они действительно его не стоят. И я воздаю должное вашему терпению, благодарный читатель. Меж тем, продолжим…

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

Рождение

[продолжение следует]

Зрелость

...

...

Кризис среднего возраста

...

...

Второе рождение

...

...