Как стать автором
Обновить

«Типографим» текст (в Windows)

В то время как на Mac или Linux есть удобные способы украсить вводимый текст правильными кавычками, ударениями или тире, на Windows с этим всё слегка сложнее. Например, типографская раскладка Ильи Бирмана обладает рядом неудобств, таких как потеря функциональности правой Alt-клавиши или необходимость запоминать нужные сочетания клавиш. Есть ещё пара утилит, но они не понравились мне, так как или не настраивались должным образом, или глючили (страшным, как правило, образом).

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

document.body.addEventListener ('click', function (e){
	var typo_core = function (a, d){
		a = a.replace (/[«„»“]/g, '"').replace (/[–—]/g, '-');
		for (var n in d = {
			'©': (/\([cс]\)/gi),
			// Тут ещё много такого
		}){ a = a.replace (d [n], n) }
		return a; 
	}, typo_setup = function (a){			
		var handler = function (e){ e.target.value = typo_core (e.target.value) };
		a.addEventListener ('blur', handler, 0);
		handler ({target: a});
	}

	if (/textarea/i.test (e.target.tagName) && !e.target.hasAttribute ('typo')){
		typo_setup (e.target);
		e.target.setAttribute ('typo', true);
	}
}, 0);

(Тут файл целиком: http://pastebin.com/6yBZvyEP.)

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

Решение, о котором я говорю — приложение в фоне, отслеживающее нажатия на те или иные сочетания клавиш и «типографящее» текст. Чтобы не заморачиваться с WinAPI, я попробовал воспользоваться утилитой AutoHotkey. Довольно неплохая штука, отлично подходящая для решения задачи.

Первые версии запускали node.js, который и обрабатывал текст (текст, в свою очередь, получался из буфера обмена после эмуляции нажатия клавиш Ctrl+A и Ctrl+C). В дальнейшем, в целях ускорения работы, переписал код, написав (всё на том же node.js) парсер, переносящий регулярные выражения сразу в скрипт для AutoHotKey.

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

Вот архив с приложением и исходниками: http://www.sendspace.com/file/9v2mjo. В нём есть всё, кроме node.js. Хотя она для сборки и не нужна, нужно будет только шестую строчку из файла build.bat выкинуть.

Как использовать само приложение: достаточно нажать CapsLock в поле ввода для его «оттипиграфирования». Alt+CapsLock обработает лишь выделенный текст, Ctrl+CapsLock обработает содержимое буфера обмена. Разумеется, сочетания клавиш можно изменить.

Примеры работы:
  1. -> → →
  2. (с) → ©
  3. (tm) → ™
  4. 10x20 → 10×20
  5. 10-20 → 10–20
  6. катало'г → катало́г
  7. «Тест „вложенных“ кавычек» → «Тест „вложенных“ кавычек» (хе-хе, тут парсер хабрахабра мне всё слегка портит; поверьте мне, там были совершенно обычные кавычки)
  8. P!=NP → P≠NP

Ну и всё такое.

Спасибо за внимание; надеюсь, я не впустую потратил ваше время.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.