LE Blog

Инженер с поэтической душой

24.06.2020 firtree_right Следи за руками

switcher koziavki

Умением печатать не глядя на клавиатуру я так и не овладел. Украденная у Владимира Владимировича Шахиджаняна программа «СОЛО на клавиатуре» меня не брала. Да и сам Владимир Владимирович, стоявший одно время в метро с компакт-дисками этой программы, мотивации не добавлял. Как знают все, кто не умеет печтать вслепую, это приводит к тому, что ты напечатал уже целый абзац, а раскладку переключить забыл. Потом всех, конечно, спасла волшебная программа «Пунто Свитчер». Но мне она всегда казалась с одной стороны подозрительно умной, а с другой — периодически срабатывала невпопад. Поэтому я ей не пользовался и со временем даже забыл, что она есть. Но тут субботним вечером, занимаясь практически парным практически программированием практически с незнакомцем, вспомнил. И решил написать воркфлоу для «Альфреда», который я купил и преступно мало использую. В отличие от «Пунты» времён нулевых он переключает только выделенный текст. Лихое было время, конечно, программы запросто перехватывали ввод-вывод друг у друга.

Сделан воркфлоу довольно просто. В основе вот такой скрипт:

#!/bin/zsh

query=$1

if [[ $query =~ [a-zA-Z] ]]
then
    result=$(echo $query | sed "y_@#^&qwertyuiop\[\]asdfghjkl;'zxcvbnm,./QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?_\"№:?йцукенгшщз\х\ъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,_")
else
    result=$(echo $query | sed "y_\"№:?йцукенгшщз\х\ъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,_@#^&qwertyuiop\[\]asdfghjkl;'zxcvbnm,./QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?_")
fi

echo -n $result

И оболочка из горячих клавиш, обрабатываемых «Альфредом», которые этот скрипт кормят и вставляют результат обратно. Alfred workfow в моём гитхабе. Со временем буду добавлять туда то, что сам использую.