Сообщений: 0 | #1 - 20 сентября 2012 в 16:55 | |
Юзнаю систему на ноуте-планшете. У него есть стилус которым можно тыкать по экрану. Есть необходимость в повороте экрана на 180. В настройках Wacon эта функция есть, но вот есть проблемка со стилусом. При повороте экрана на 180 в режим Портрет, ориентация мышки-стилуса не изменяется и остается в Ландшафтном режиме. Когда стилусом ведешь влево курсор на экране едит вверх, когда вправо - вниз ну и в остальных плоскостях тоже. Как изменить ориентацию мыши вместе с экраном??? |
Сообщений: 0 | #2 - 24 сентября 2012 в 21:25 | |
Вообщем долго капал инет на предмет такой фитчи и вот решилось: Для начала смотрим id нужных нам устройств командой xinput, ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=10 [slave pointer (2)] ⎜ ↳ Serial Wacom Tablet stylus id=12 [slave pointer (2)] ⎜ ↳ Serial Wacom Tablet eraser id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)] ↳ ThinkPad Extra Buttons id=11 [slave keyboard (3)] В моем случае это Id=12,13 и 10 мой трекпоинт (типа тачпад) Далее пишем скрипт поворота экрана, он делает три вещи после определения текущего положения экрана: - поворачивает экран, - поворачивает ориентацию тачскрина, - выключает или включает трекпоинт (по номеру ID в моем случае 10). #!/bin/bash rotation=`xrandr -q | fgrep "right (" ` if [ $? == 1 ] ; then xrandr -o right xsetwacom --set "Serial Wacom Tablet stylus" Rotate cw xsetwacom --set "TPPS/2 IBM TrackPoint" Rotate cw xsetwacom --set "Serial Wacom Tablet eraser" Rotate cw # следующая строчка отключает трекпоинт при повороте экрана xinput set-prop 10 "Device Enabled" 0 else xrandr -o normal xsetwacom --set "Serial Wacom Tablet stylus" Rotate normal xsetwacom --set "TPPS/2 IBM TrackPoint" Rotate normal xsetwacom --set "Serial Wacom Tablet eraser" Rotate normal xinput set-prop 10 "Device Enabled" 1 fi Примечания: - Список устойств можно ещё посмотреть с помощью xsetwacom --list - right=cw, если захотите поворачивать в left, то тогда left=ccw Если вы будете адаптировать под своё железо — учтите следующие моменты: - Определение поворота в скрипте сделано халтурно — довольно грубый греп по выводу xrandr. - keycode для вашей кнопки может быть другой - Название тач-устройств может быть другим Итак что получилось по факту - По нажатию поворачивать картинку на 90° - По повторному нажатию возвращать обратно - Поворачивать восприятие всех тачскринов (обнаружилось в ходе отладки решения) - (upd) отключаем тачпад — он иногда срабатывает на перевёрнутую крышку хотя в моем случае это было не обязательно. Осталось придумать как исполнение скрипта зацепить на хардварную кнопку сделанную именно для поворота экрана Редактировалось: 1 раз (Последний: 24 сентября 2012 в 21:27) |
Сообщений: 0 | #3 - 29 сентября 2012 в 04:36 | |
в продолжении темы: "сам спрашиваю сам отвечаю" Для того чтобы зацепить скрипт на хардварную кнопку у меня заработал эффективно вот такой метод Для начала ставим пакет xbindkeys, который позволит нам вешать на произвольные кнопки произвольные программы: apt-get install xbindkeys Далее — пишем конфиг для xbindkeys: Делаем touch ~/.xbindkeysrc Запускаем xbindkey -k Получаем окно, в котором надо нажать нужную нам кнопку — на выходе будет строчка, которую нужно отдать xbindkeys-config, чтобы запустить программу по нажатию кнопки. Если на хардварную кнопку уже что-то стало по-умолчанию, то нажмите Shift + (нужная кнопка). Будет примерно так: m:0x1 + c:199 Shift + XF86TouchpadToggle Далее необходимо проставить ноли 0x0 в первой части выражения для активации нужной нам кнопки чтобы работала без клавиши Shift. В моем случае keycode кнопки такой: m:0x0 + c:199 (понятно, что для разных устройств вторая строчка будет разной) Далее формируем конфиг, заходим в (~/.xbindkeys) и вписываем полученную строчку комбинации клавиш "rotate" m:0x0 + c:199 в файл xbindkeysrc. После чего запускаем xbindkeys-config и открываем им файл xbindkeysrc. Так же по умолчанию в конфиг попадут образцы дефолтных кнопок от xbindkeys, их можно удалить. Сохраняем изменения и закрываем конфиг. Запускаем xkbindkeys, проверяем, что работает. Прописываем запуск xbindkeys в ~/.xsession И наслаждаемся функциональностью планшета |