Сообщений: 0 |
Собственно имею сабж Lenovo ThinkPad X61 Tablet. Поставил на него Linux Mint 17. До этого c linux дела не имел, но вроди не дурак со всем спомощу гугла разобрался. А вот с кнопками не могу. На матрице есть кнопки поворота дисплея, джойстик, ентер, ескейп и меню. На их нажатие система никак не реагирует. Пробовал зделать как сказано здесь http://www.thinkwiki.org/wiki/Tablet_Hardware_Buttons, ставлю xbindkeys, в терминале пишу команду xbindkeys -k, появляется окошко, все как положено, но на нажатие этих кнопок система всеравно никак не реагирует. Если нажать кнопку на клавиатуре выдается ее код, тоесть программа работает. В Windows кнопки работали. Что делать? Как заставить работать кнопки? | ||
Сообщений: 0 |
Отличный форум. Месяц как создал тему и ниодного ответа. Может ктото поможет с решением проблемы? | ||
Сообщений: 0 |
До этого c ThinkPad X61 Tablet дела не имел... Если бы кто-то знал, наверняка бы уже помог. Вот мануал по установке убунту -- http://www.thinkwiki.org/wiki/Installing_Ubuntu_10.04_(Lucid_Lynx)_on_a_ThinkPad_X61_Tablet#Setup_the_Tablet_Rotate_Button На http://community.linuxmint.com/hardware/view/8844 человек пишет, что у него девайс работает на LM13 и он готов даже поделиться скриптом. Свяжитесь с ним, возможно он чем-то сможет помочь. | ||
Сообщений: 0 |
Собственно разобрался и решил проблему следующим образом: При нажатии не работающей кнопки syslog забивается сообщениями по типу: Код PHP: Чем дольше держать кнопку тем больше сообщений запишется в лог.
Также можно использовать команду dmesg чтобы увидеть эти сообщения. Команды для разных кнопок. setkeycodes 67 <keycode> -Control-Alt-Delete Button (маленькая кнопка утопленная в корпус, больше похожа на ресет но в windows выполняла тоже что и сочетание из трех клавиш) setkeycodes 6c <keycode> - Rotate Button (поворот экрана) setkeycodes 68 <keycode> - Toolbox Button (в windows вызывает меню настроек(яркость, тач и тд.)) Дальше пойдут кнопки которые повторяют функционал аналогичных кнопок на клавиатуре. Я испробовал разные дистрибутивы и в некоторых эти кнопки сразу работали как надо а в некоторых также сыпали в лог сообщения. setkeycodes 6b <keycode> - Esc setkeycodes 69 <keycode> - Return (центр джойстика, в windows(да и в linux дистрибутивах) выполняет тоже что и Enter) setkeycodes 71 <keycode> - Up (джойстик верх) setkeycodes 6f <keycode> - Down setkeycodes 6e <keycode> - Left setkeycodes 6d <keycode> - Right А вот команды которые я выполнял чтоб назначить кнопкам функции: Код PHP: Где взять коды кнопок? В мануалах которые я читал везде написано взять скан код кнопки перевести в десятичную систему калькулятором и добавить 128. С некоторыми кнопками все гуд они попадают на свободные кейкоды а некоторые у меня попадали на задействованные кейкоды, конфликта в системе это не вызывает но при нажатии кнопки она выполняет совсем не те действия которые должна. Я точно не помню но получалось что-то типа жмешь Esc на матрице а система ее понимает как кнопку назад(в браузере).
Потому кнопкам которые повторяют функционал кнопок на клавиатуре я назначил коды кнопок с клавиатуры. Чтобы узнать код кнопки выполняем команду xev или xbindkeys -k Появится белое окно, жмем кнопку код которой хотим узнать. При первой команде получим: Код PHP: При второй:
Код PHP: Код кнопки Enter у нас 36.
Я не понял почему но если вести sudo setkeycodes 69 36 нашей кнопке будет назначен код 44, т. е. На 8 больше, разбираться не стал просто отнял везде 8, таким образом я заставил работать джойстик и Esc. Остались еще спец кнопки. Им назначил просто свободные коды обычно от 120 до 255. Проверить свободные коды можно командой sudo dumpkeys Но после перезагрузки кнопки перестали работать, вылечилось это помещением в /etc/init/ файла kb-keys-customize.conf следующего содержания: Код PHP: Я подумал что на этом все, система видит кнопки и реагирует на них щас поставлю в комбинациях клавиш команды на запуск нужных мне скриптов или приложений и готово но не тут то было, стандартные средства ос отказались видеть кнопки, точнее кнопки повторяющие функционал кнопок клавиатуры видились отлично, а вот 3 спец кнопки просто не вбивались в комбинацию. Все потому что клавишам не задано символьное обозначение. NoSymbol Тут наметилось 2 пути решения данной проблемы: 1. назначить значения по типу XF86Launch2 XF86Launch3... 2. Использовать xbindkeys.
Я решил использовать второй вариант. Если у вас еще не установлен xbindkeys установите его. Создадим файл конфигурации (без него не работает) $ xbindkeys --defaults > ~/.xbindkeysrc Водим команду $ xbindkeys -k и жмем нужную нам кнопку. Получаем вывод: Код PHP: Копируем его в ~/.xbindkeysrc и заменяем (Scheme function) на нашу команду.
У меня получилось следующее: Код PHP: Кнопки действия выполняют но при изменении ориентации экрана джойстик на матрице не меняет значения своих кнопок, для изменения работы джойстика в скрипте использовалась команда setkeycodes которую нужно выполнять с sudo, чтобы у нас не просило пароль при каждом нажатии кнопки переворота в папке /etc/sudoers.d/ был создан файл rotate следующего содержания:
Cmnd_Alias ROTATE = /home/svl/scripts/rotate.sh Код PHP: ну и последнее сам скрипт rotate.sh
Код PHP: Ссылки на источники и полезные статьи:
http://www.thinkwiki.org/wiki/Tablet_Hardware_Buttons https://wiki.archlinux.org/index.php/Xbindkeys http://www.thinkwiki.org/wiki/Installing_Ubuntu_10.04_%28Lucid_Lynx%29_on_a_ThinkPad_X61_Tablet https://help.ubuntu.com/community/MultimediaKeys http://www.tux.in.ua/articles/458 |
В начало страницы |