Сегодняшняя статья посвящена решению проблемы по искоренению нервирующей особенности строения ноутбука, а именно наличию тачпада прямо под руками. Случайно задетый тачпад во время набора текста может стать причиной довольно неприятных последствий: отправки сообщения не тому контакту, набор текста в никуда или же просто смена строк и как следствие неправильно набранный текст. В общем, проблема эта неприятная, а решения этой проблемы из коробки нет, кроме как полностью отключить тачпад.
Ниже я разберу основные способы решения данной проблемы не только путем разрубания гордиева узла, но и вполне элегантные, заслуживающие уважения способы.
Этот способ заключается в просто отключении тачпада как такового в системе.
К примеру, в Ubuntu Linux можно зайти сюда:
Система->Администрирование->Мышь
И просто снять галочку напротив тачпада. Этот способ отключает устройство до тех пор, пока вы опять не вернетесь в этот раздел меню и не вернете галку на место.
Этот способ более элегантен, так как заключается в создании комбинации клавиш, нажав которую мы отключаем и включаем тачпад, по своему усмотрению. Рассматривать ситуацию я буду на примере Ubuntu Linux 9.04,хоят это и не особо важно, так как данный способ работает и на версиях 8.04, 8.10, а при пустяковой адаптации является вполне универсальным способом, которым могут воспользоваться пользователи практически любого дистрибутива.
Пункт 1: Обновление и установка нужных пакетов.
sudo apt-get update
sudo apt-get install perl-Tk
Это пакет, который заставляет работать скрипт отключения и включения тачпада на ноутбуках.
Пункт 2: Редактируем xorg.conf.
Это необходимо для того, чтобы добавить в раздел “InputDevice” строку Option “SHMConfig” “true”. Или команды отдаваемые скриптом будут проигнорированы системой.
sudo nano /etc/X11/xorg.conf
ищем блок: “InputDevice” и приводим его к такому виду:
Section “InputDevice”
Identifier “Synaptics Touchpad”
Driver “synaptics”
Option “SendCoreEvents” “true”
Option “Device” “/dev/psaux”
Option “Protocol” “auto-dev”
Option “HorizScrollDelta” “0″
Option “SHMConfig” “true”
EndSection
То есть, добавляем строчку Option “SHMConfig” “true”. Если у вас сенсорная площадка не от Synaptics, то строчка, которая начинается с Identifier так же должна отличаться от канонической.
Это действие необходимо выполнять тщательно и не допуская ошибок, так как они могу привести к падению иксов или не корректной работе, а это, как минимум, неприятно.
После оттачивания навыков копипаста необходимо перезагрузить x-server.
Если же xorg.conf стоически открещивается от наличия секции “InputDevice”, то просто установите драйвер для synaptics.
sudo apt-get install xserver-xorg-input-synaptics
Пункт 3: Копируем скрипт отключения тачпада в нужную папку.
Скрипт отключения тачпада стоит поместить в ~/bin, если этот каталог не существует в вашей домашней папке, то просто создайте. Не забываем в свойствах файла указать, что он исполняемый.
Код скрипта:
#! /usr/bin/perl -w
# 1.In /etc/X11/Xorg.conf in section “Synaptics Touchpad” you need add option
# Option “SHMConfig” “true”
# 2. Reboot X-server
# 3. Install perl-Tk module for use gsynaptics.pl
# You can associate this program with shortkey in your desktop manager and use anytime on desktop
# Tested on KDE3.5 Kubuntu 8.04
# Author: Mishchenko A.S., 2008use strict;
use Tk;
#Variables:
# time - time to show message in mSec
my $time=3000;
my $t;
my $m;
# Detect on open gsynaptics.pl. if open - kill…
if (-e “/tmp/syn_id”)
{
open(F,”/tmp/syn_id”);
$t=<F>;
close(F);
system(”kill -9 “.$t);
system(”rm -f /tmp/syn_id”);
}
# write ID to tmp file
open(F,”>/tmp/syn_id”);
print F $;
close(F);
#get synaptics status
system(”synclient -l | grep TouchpadOff > /tmp/syn_key”);
open(F,”/tmp/syn_key”);
$t=<F>;
close(F);
$t=~/^(.*?)TouchpadOff(.*?)=\s(.*?)$/;
$t=$3;
# If status=1 or 2 set to 0 else to 1
if (($t eq “1″) || ($t eq “2″))
{
system(”synclient TouchpadOff=0″);
$m=”Touchpad On.”;
}
else
{
system(”synclient TouchpadOff=1″);
$m=”Touchpad Off.”;
}
#delete tmp file
system(”rm -f /tmp/syn_key”);
# create window and show message
my $main = MainWindow->new;
$main->Label(-text => $m)->pack;
$main->Button(-text => ‘Ok’,-command => [$main => 'destroy'])->pack;
$main->after($time,[$main => 'destroy']);
MainLoop;
# delete ID file on exit
system(”rm -f /tmp/syn_id”);
exit;
Пункт 4: Привязываем скрипт к комбинации клавиш.
Этот пункт расписывать я не стану, так как его содержимое всецело зависит от того DE, которым пользуется конкретный пользователь. Для KDE этот путь заключается в следующем.
4.1. Запускаем kcontrol (Alt+F2).
4.2. Раскрываем группу «Региональные и специальные возможности», затем кликаем на вкладку «Действия».
4.3.Нам необходимо создать новое действие типа «Комбинация клавиш», переходим на вкладку «Команда или адрес». Обзываем новое действие (как вам угодно).
4.4. Задаем комбинацию клавиш, наиболее удобную для вас.
4.5. Переходим на третью вкладку и назначаем в качестве команды наш готовый скрипт.
Все, теперь ваш тачпад - самое послушное устройство повинующееся командам.
Мало чем отличается от способа №2, кроме того, что вместо хоткея пользователь будет пользоваться специализированной клавишей, а значит, настройка будет происходить через ACPI.
Это способ ориентирован на Asusоводов, в первую очередь.
Пункт 1: Из способа №2 вам понадобятся пункты 2, а вот четвертый будет несколько усложнен.
Пункт 2: Устанавливаем нужные пакеты.
После того, как вы их выполните, поставьте еще и пакет acpitool - пригодится:
sudo apt-get acpi acpid acpitool
Пункт 3: Определяем код нужной кнопки.
В консоли от имени root выполняем команду:
acpi_listen
и зажимаем кнопку управления тачпадом.
Таким образом, на выходе, мы получаем код кнопки приблизительно такого типа (ноутбук Asus x50n):
hotkey ATKD 0000006b 00000000
Из это строчки нам нужна только череда цифр, которая следует за абривеатурой ATKD (0000006b), вторая группа цифр - игнорируется.
Пункт 4: Нам необходимо найти этот код в /etc/acpi/events.
99% что там уже есть файлик содержащий код со ссылкой на абсолютно нерабочий скрипт или прочую ерунду. Выполняем:
# grep 0000006b events/*
Далее действия будут рассматриваться на примере Asus x50n, но они могут отличаться только названиями файлов и кодом кнопки, в остальном - достаточно универсальны.
events/asus-touchpad:event=hotkey ATKD 0000005c
# cat events/ asus-touchpad
Перед нами перед нами предстает содержимое файлика. Правим значение кода и приводим содержание к такому виду:
# /etc/acpi/events/asus-touchpad
# This is called when the user presses the touchpad button and calls
# /etc/acpi/asus-touchpad.sh for further processing.event=hotkey (ATKD|HOTK) 0000006b
action=/etc/acpi/asus-touchpad.sh
Сохраняемся, выходим.
Пункт 5: Приводим скрипт в нормальное состояние.
Для этого идем и открываем файл /etc/acpi/asus-touchpad.sh для редактирования и приводим к такому виду:
#!/bin/sh
[ -f /usr/share/acpi-support/state-funcs ] || exit 0.# get the current state of the touchpad
TPSTATUS=`synclient -l | awk ‘/TouchpadOff/ {print $3}’`# if getting the status failed, exit
test -z $TPSTATUS && exit 1if [ $TPSTATUS = 0 ]; then
synclient TouchpadOff=1
else
synclient TouchpadOff=0
fi
Сохраняемся, выходим.
Этот способ для ленивых, то есть особых усилий настройке прилагать не надо, да и зачем? Смысл предстоящих пасов заключается в том, что как только пользователь начинает набирать текст, тачпад отключается, но после того, как набор закончился, происходит обратное включение в течение 2 секунд.
Это скорее не способ отключения тачпада, а защита от случайных нажатий.
Для начала убедитесь, что у вас есть такой процесс syndaemon, если его нет, то установите.
Затем, выполните действие, описанное в способе №2, пункт 2.
Далее просто выполнить в консоли программу от имени root.
/usr/bin/syndaemon -d -t -i 2
И получаем то, что и требовалось, как только ваши пальчики начнут стучать по клавиатуре, тачпад отключается и ваше сообщение не будет испорчено несвоевременным кликом.
Вывод:
Кто бы что ни говорил, но я не знаю более ни одной ОС, которая была бы такой гибкой в астройках даже таких пустяковых делах как отключения тачпада. Напомню, что это не исчерпывающее руководство, так как существует гораздо больше способов, но на мой взгляд это наиболее элегантные и простые. Я уверен, что через 6-12 месяцев они уже никому не понадобятся. так как все можно будет сделать в графическом режиме. Ну, а пока, думаю, это достойный материал в раздел “Настройка Linux на ноутбуке”
И на последок расскажу о самом действенном и 100% безотказном методе, а точнее покажу ![]()

Автор: Максим Прохоренко.
Источник: http://originalnews.ru/?p=1081
Комментарии
Классная статья, только вот
Классная статья, только вот толи автору ноутбуки попадались какие то не такие то ли что, но у меля во всех ноутбуках с тачпадом что прошли через мои руки уже была встроенная комбинация клавиш (обычно Fn-Fx) которая именно этим и занимается без каких либо телодвижений с моей стороны. И работает эта функция как в Mandriva, OpenSuSE так и в Ubuntu (ну железно работает).
Господи, убрано цензурой,
Господи, убрано цензурой, какое счастье!!!!!!
Спасибо вам огромное.
WBR, Леонид Каганов lleo.aha.ru
ASUS EEE PC701, Ubuntu
PS: Замучался в скрипте исправлять кавычки на нормальные, и строчку "print F $;" пришлось закомментировать - ругался. А так - все бесподобно, если от рута запустить! Наконец-то!
автор начал бы с последнего
автор начал бы с последнего метода..
а то не-юзер-фрэндли...
Отправить комментарий