Пишу, по большей части, про историю, свою жизнь и немного про программирование.

👁 Глаз следящий

Глаз, следящий за мышью в консоли

Обновилась до версии 2.9 моя любимая программа-терминал iTerm2. Изучая новые возможности, обнаружил нечто неожиданное — теперь в консоль можно выводить обычные графические изображения.

Протокол довольно простой:

ESC ] 1337 ; File = [необязательные параметры] : изображение в формате base64 ^G

Решил немного с ним побаловаться, результат на скриншоте — небольшая программа на «баше» — глаз, который следит за указателем мыши.

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

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

Для запуска требуется iTerm2 2.9 и выше и Imagemagick.

4 комментария
spiridonov@gmail.com 2016

Он таки следящий, не? :-)

Евгений Степанищев (bolknote.ru) 2016

Комментарий для spiridonov@gmail.com:

Да, конечно :) Опечатался.

greys (gleb.reys.net) 2016

Шикарно!

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

Спасиб!

Евгений Степанищев (bolknote.ru) 2016

Комментарий для gleb.reys.net:

Больше всего я экспериментировал в «Арканоиде» всё же: http://bolknote.ru/all/3410