Я долго с этим мирился, пока не вспомнил про вертикальные мониторы. А почему нет? Чем я хуже? Вот тогда я и решил немного переоборудовать свое рабочее место. Можно было бы сделать крепеж и навсегда перевести монитор в вертикальное положение, но меня это не устраивало по той причине, что на моем «мониторе» я часто смотрю фильмы. А вертикальные фильмы, слава богу, пока еще не снимают. В этот момент появилась идея приобрести поворотный кронштейн и повесить телевизор на стену, чтобы при необходимости его вертеть. Именно так я и поступил.
Так лучше, не правда ли?
Жить стало намного удобнее. Надо поработать? Встал со стула, повернул монитор, сел обратно, ввел в терминале команду
xrandr -o left
и работай себе с комфортом. Хочешь посмотреть фильмец? Сделай тоже самое, только введи уже xrandr -o normal
и расслабляйся.
Все это меня полностью устраивало, пока мне просто не надоело. Надоело вводить эти команды. Вставать и переворачивать эту махину, мне правда тоже надоело, но не моторчик же приделывать к ней, верно? А вот ввод команд я мог автоматизировать без особых затрат. Но как объяснить компьютеру, что монитор был перевернут? Можно было бы заморочиться как, например, вот этот парень, но это никому ненужные сложности. В качестве интрфейса взаимодействия я сразу решил использовать последовательный порт (если нет встроенного, можно прикупить адаптер usb-to-serial). Но как быть с датчиком? А тут дело обстоит еще проще. Я отыскал никому ненужный тюбик от губной помады, вытащил металлический шарик из подшипника и соорудил это:
Тюбик, с одной стороны которого размещены 2 контакта, подключенные к пинам TxD и RxD последовательного порта.
Внутри тюбика катается металический шарик. Если он скатывается к контактам, то замыкает их, тем самым соединяя пины передачи и приема последовательного порта. Тюбик вешается позади «монитора» под углом в 45 градусов таким образом, что при горизонтальном положении шарик находится в бесконтактном конце тюбика, а при переводе монитора в вертикальный режим, шарик скатывается и замыкает собой контакты.
Осталось написать программную часть. Принцип работы очень просто: в серийный порт пишется слово и сразу же читается. Если программа хоть что-нибудь прочитала, то контакты замкнуты, а значит монитор находится в вертикальном положении. В результате чего выполняется команда xrandr -o left
. При повороте обратно в горизонтальное положение происходит аналогичное действие, но с командой xrandr -o normal
.
Первый раз я написал скрипт на моем любимом питоне. Это был двухпоточный монстр, который жрал, если верить top
, 120% CPU. Почему так происходило, для меня до сих пор остается загадкой. В конце концов я решил переписать программу на С, что помогло незагружать так сильно процессор.
Вот впринципе и все. Осталось лишь добавить программу в автозагрузку.
Решил поделиться этим небольшим лайфхаком с хабросообществом. Вдруг кому пригодится.
Код можно найти на гитхабе.
Информацию про грамматические и пунктационные ошибки отправляйте, пожалуйста, в личные сообщения, дабы не засорять комментарии.
ссылка на оригинал статьи http://habrahabr.ru/post/137650/
Добавить комментарий