<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог Diestro &#187; Почти по теме</title>
	<atom:link href="http://blog.diestro.ru/category/almost/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.diestro.ru</link>
	<description>Flex, Flash, ActionScript</description>
	<lastBuildDate>Wed, 06 Jul 2011 05:23:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Рефакторинг клавиатуры</title>
		<link>http://blog.diestro.ru/refaktoring-klaviatury/</link>
		<comments>http://blog.diestro.ru/refaktoring-klaviatury/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 20:32:49 +0000</pubDate>
		<dc:creator>Diestro</dc:creator>
				<category><![CDATA[Почти по теме]]></category>

		<guid isPermaLink="false">http://blog.diestro.ru/?p=62</guid>
		<description><![CDATA[Недавно поймал себя на мысли что клавишей Caps Lock по ее прямому назначению я не пользуюсь никогда. Однако часто, зацепляя её случайно, приходится стирать набранный в верхнем регистре текст код. Казалось бы удобная кнопка, например для написания констант (как известно в соответствии с соглашениями они именуются ЗАГЛАВНЫМИ БУКВАМИ), но по мне она доставляет больше хлопот [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно поймал себя на мысли что клавишей Caps Lock по ее прямому назначению я не пользуюсь никогда. Однако часто, зацепляя её случайно, приходится стирать набранный в верхнем регистре <del datetime="2008-11-04T20:36:05+00:00">текст</del> код. Казалось бы удобная кнопка, например для написания констант (как известно в соответствии с соглашениями они именуются ЗАГЛАВНЫМИ БУКВАМИ), но по мне она доставляет больше хлопот нежели каких-то удобств.<br />
<span id="more-62"></span><br />
Возникла мысль заменить функционал клавиши Caps Lock на нечто другое, что-то более полезное, ведь расположение данной кнопки весьма удобное.</p>
<p>На всех моих компьютерах (домашнем и рабочем) установлен Punto Switcher. Очень полезная программа. Если кто не знаком — поясню.</p>
<p>Данная программа автоматически исправляет текст введенный в неправильной раскладке. Как часто вам приходилось в адресной строке браузера набирать &#8220;ццц&#8221;? Вот! А программа переключит сама и перепишет текст правильно. Правда я всегда отключаю автоматический режим переключения и исправляю неправильно введённый текст вручную. Последнее неправильно введённое слово можно исправить нажав кнопку Pause/Break. А если я с перепугу напечатал целое предложение не в той раскладке &#8211; тоже не проблема: необходимо выделить нужный текст и нажать Shift+Break. В результате &#8211; я никогда не ищу на экране значок раскладки, включённой в данный момент (разве что при наборе паролей), я всегда твёрдо уверен что без проблем смогу исправиться.</p>
<p>К чему я это? Я подумал, что функционал клавиши Break, которая располагается на клавиатуре крайне неудобно неплохо было бы поиметь на клавише Caps Lock. В принципе Punto Switcher, начиная с версии 3 позволяет переназначить все горячие клавиши, но как оказалось, после назначения переключения раскладки на кнопку Caps Lock по ее нажатии все равно происходит смена регистра и в итоге получается полная каша. Да и от функционала клавиши Caps Lock окончательно отказываться не хотелось. А вдруг пригодиться?</p>
<p>Возник резонный вопрос &#8211; возможно ли сделать переназначение функционала отдельных клавиш на другие или отключить их вовсе на уровне операционной системы (я про Windows XP)? Оказалось да. В реестре есть специальный ключик в котором можно перемешать всё и вся (я про кнопки), указывая <a href="http://www.computer-engineering.org/ps2keyboard/scancodes1.html" target="_blank">скан-коды клавиш</a>. Если, например, добавить следующее значение в реестр то клавиша Caps Lock будет отключена, а её обязанности возьмёт на себя Scroll Lock (вот уж действительно загадочная кнопка <img src='http://blog.diestro.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<div class="codecolorer-container reg mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="reg codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0000FF;">Windows Registry Editor Version 5.00</span><br />
<br />
<span style="color: #000000;">&#91;</span><span style="color: #800000;">HKEY_LOCAL_MACHINE</span>\SYSTEM\CurrentControlSet\Control\Keyboard Layout<span style="color: #000000;">&#93;</span><br />
<br />
<span style="color: #0000FF;">&quot;Scancode Map&quot;</span><span style="color: #000000;">=</span><span style="">hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,3a,00,3A,00,46,00,00,00,00,00</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|_____________________| |_________| |_________| |_________| |_________|<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; всегда 8 нулей &nbsp; &nbsp; Кол-во 4-х &nbsp;|Отключаем| |Переназ- | &nbsp;Всегда 4 <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; байтных слов |Caps Lock| |начаем &nbsp; | &nbsp; &nbsp;нуля<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вместе с &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |Scroll на| &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; последними нулями &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|Caps &nbsp; &nbsp; |</div></td></tr></tbody></table></div>
<p>Здесь <tt>00 00 &lt;— 3A 00</tt> как раз отключает клавишу Caps Lock имеющую код <tt>00 3A</tt>, а <tt>3A 00 &lt;—  46 00</tt> заменяет клавишу Scroll Lock имеющую код <tt>00 46</tt> на Caps Lock. Стоит заметить что порядок последовательности байт при записи в ключ реестра — обратный.</p>
<p>Оперировать hex числами при составлении записи в реестре не совсем удобно. Помочь в этом может  програмка <a href="http://www.randyrants.com/sharpkeys/" target="_blank">SharpKeys</a> где мы просто выбираем что на что нам нужно поменять или отключить, а она сама формирует запись в реестр. Все бы ничего да по закону Мёрфи оказалось что размер кода клавиши Break составляет 6 байт! И записать все 6 байт в реестровую запись нельзя. Видимо по этой же причине в Sharpkeys можно переопределить любые клавиши и их комбинации за исключением клавиши Break.</p>
<p>После взгляда на <a href="http://www.computer-engineering.org/ps2keyboard/scancodes1.html" target="_blank">таблицу скан-кодов</a> оказалось что первые 2 байта скан-кода клавиши Break (<tt>E1,1D</tt>) являются уникальными, поэтому я пошел на эксперимент и сделал изменения в файле реестра указав вместо 6-ти байт только первые 2 и о чудо! Работает (после перезагрузки, естественно)!</p>
<p><a href="http://blog.diestro.ru/wp-content/uploads/2008/11/switchcapstoscrollandsetcapstobreak.reg">Вот он</a> файл реестра, в результате применения которого клаиша Scroll Lock возьмёт на себя функции Caps Lock, а Caps Lock будет дублировать клавишу Break.</p>
<p>Кстати отменить все свои издевательства над клавиатурой можно просто очистив ключ:</p>
<div class="codecolorer-container reg mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="reg codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0000FF;">Windows Registry Editor Version 5.00</span><br />
<br />
<span style="color: #000000;">&#91;</span><span style="color: #800000;">HKEY_LOCAL_MACHINE</span>\SYSTEM\CurrentControlSet\Control\Keyboard Layout<span style="color: #000000;">&#93;</span><br />
<br />
<span style="color: #0000FF;">&quot;Scancode Map&quot;</span><span style="color: #000000;">=</span>-</div></td></tr></tbody></table></div>
<p>Что меня сподвигло на написание данного поста? Мне показалась что данная тема будет интересна не только в контексте моего конкретного примера. Ведь часто бывает так что на &#8220;урезаных&#8221; или ноутбучных клавиатурах расположение некоторых клавиш нестандартно или неудобно и клавиатурное пространство хотелось бы оптимизировать, что несомненно добавит пару драгоценных минут для кодинга или развлечений.</p>
<p>Возвращаясь к программе Punto Switcher хотелось бы отметить нововведение, появившееся в 3-й версии — автозамена. С помощью данной функции можно реализовать автоматическую замену определенной последовательности символов на заранее заготовленный текст.</p>
<p>Например я указал, что:</p>
<p>prf = private function;</p>
<p>puf = public function;</p>
<p>prv = private var;</p>
<p>puv = public var</p>
<p>и т.д.</p>
<p>Соответствено можно расширить список автозамен под свои потребности и вкусы: для геттеров сеттеров, метатегов и прочих часто используемых конструкций.</p>
<p>Главное приемущество данного метода — этим можно пользоваться где угодно: в любой IDE или в текстовом редакторе.</p>
<p>Жаль что данный пост расчитан только на владьцев windows.</p>
<p>А под Mac&#8217;осью работать не доводилось и подобным опытом для него я поделиться не могу.</p>
<p>Вообще очень интересная тема по поводу оптимизации своего рабочего пространства не только в рамках виртуального рабочего стола , но и реального <img src='http://blog.diestro.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diestro.ru/refaktoring-klaviatury/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

