Как стать автором
Поиск
Написать публикацию
Обновить

Кнопка для поворота экрана на X220 tablet

Время на прочтение2 мин
Количество просмотров4.7K
Взамен убитого почти всусмерть X220i купил себе X220 tablet. Замечательная железка — ноутбук с вращающимся экраном, тачскрином и пером (которое понимает «силу нажатия»). Однако, увы, часть хардварных кнопок (в т.ч. на вращающемся экране) не работала.

Одна из них — кнопка поворота (на фотографии). Очень полезна для перевода ноутбука в «readmode» (c книжно-портретной ориентацией).



Что мы хотим?

  • По нажатию поворачивать картинку на 90°
  • По повторному нажатию возвращать обратно
  • Поворачивать восприятие всех тачскринов (обнаружилось в ходе отладки решения)
  • (upd) отключаем тачпад — он иногда срабатывает на перевёрнутую крышку


Под катом — вариант решения и ссылки на использованные материалы.


Если вы будете адаптировать под своё железо — учтите следующие моменты:
  • Определение поворота в скрипте сделано халтурно — довольно грубый греп по выводу xrandr.
  • keycode для вашей кнопки может быть другой
  • Название тач-устройств может быть другим


Для начала ставим пакет xkeybind, который позволит нам вешать на произвольные кнопки произвольные программы:

apt-get install xkeybind

Далее, пишем скрипт поворота экрана, он делает три вещи после определения текущего положения экрана: поворачивает экран, поворачивает ориентацию тачскрина, выключает или включает тачпад (по номеру).

#!/bin/bash
rotation=`xrandr -q | fgrep "left (" `
if [ $? == 1 ] ;
then
  xrandr -o left
  xsetwacom --set "Wacom ISDv4 E6 Pen stylus" Rotate ccw
  xsetwacom --set "Wacom ISDv4 E6 Finger touch" Rotate ccw
  xsetwacom --set "Wacom ISDv4 E6 Pen eraser" Rotate ccw
  xinput set-prop 13 "Device Enabled" 0
else
  xrandr -o normal
  xsetwacom --set "Wacom ISDv4 E6 Pen stylus" Rotate normal
  xsetwacom --set "Wacom ISDv4 E6 Finger touch" Rotate normal
  xsetwacom --set "Wacom ISDv4 E6 Pen eraser" Rotate normal
   xinput set-prop 13 "Device Enabled" 1
fi


Примечания:
  • как я и предупреждал, греп очень халтурный
  • Список устойств можно посмотреть с помощью xsetwacom --list
  • left=ccw, если захотите поворачивать в right, то тогда cw
  • Список устройств можно посмотреть в xinput --list

Я этот скрипт назвал /usr/local/bin/rotate.

Не забываем про chmod +x на него.

Далее — пишем конфиг для xbindkeys:
  1. Делаем touch ~/.xbindkeysrc (у xbindkeys мелкий баг — в отсутствие конфига -k не работает).
  2. Запускаем xbindkey -k. Получаем окно, в котором надо нажать нужную нам кнопку — на выходе будет строчка, которую нужно отдать xbindkeys, чтобы запустить программу по нажатию кнопки. Этот путь у меня оказался самым эффективным, хоть и начал я с магических setkeys, сканкодов, кейкодов и т.д.
  3. Вписываем в конфиг (~/.xbindkeys):
    "rotate"
    m:0x0 + c:161
    

    (понятно, что для разных устройств вторая строчка будет разной)
  4. Запускаем xkbindkeys, проверяем, что работает.
  5. Прописываем запуск xbindkeys в ~/.xsession
  6. PROFIT??? (см картинку в начале поста)

ссылки


Теги:
Хабы:
Всего голосов 26: ↑20 и ↓6+14
Комментарии25

Публикации

Ближайшие события