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

в 1:13, , рубрики: howto, linux, tablet, touchscreen, x220, Ноутбуки, планшет, Убунтариум, метки: , , , ,

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

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

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

Что мы хотим?

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

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


Если вы будете адаптировать под своё железо — учтите следующие моменты:

  • Определение поворота в скрипте сделано халтурно — довольно грубый греп по выводу 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

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
fi

Примечания:

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

Я этот скрипт назвал /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??? (см картинку в начале поста)

Автор: amarao

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js