Home
Меня санитары на волю ведут... Свобода какое хорошее слово!
Вмикання-вимикання тачпаду під Лінуксом... 
9th-Jun-2008 01:12 pm
Жабосвинюка
Задався цілью - зробив.
Якщо у Вас немає на ноутбуці кнопки вимикання-вмикання тачпаду - цей скрипт для Вас.
На початку скрипта вказано необхідні умови його виконання.
Сама програма автоматом не запускається, а є лише перемикачем стану, але можна прив"язати клавішну асоціацію до неї в вашому десктоп менеджері. Я використовую КДЕ - прив"язав до Він+Т.
Що робить програма? Змінює стан тачпаду, виводить вікно стану тачпаду, яке саме закривається через певний час, або якщо натиснути кнопку ОК.
Розробляв під КДЕ 3.5 на Кубунту 8.04, але думаю не буде проблем в інших Лінуксах та десктоп-оболонках, якщо там підтримується Тк та, встановлено драйвер synaptics і є можливість прив"язати клавіатурному скороченню запуск зовнішньої програми...

#! /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., 2008

use 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;
Comments 
11th-Jun-2008 03:55 pm (UTC)
Гм. Почти работает.Ругается:

syntax error at /home/qiwichupa/bin/touchpad_endis.sh line 23, near "=;"
syntax error at /home/qiwichupa/bin/touchpad_endis.sh line 35, near "=;"
Execution of /home/qiwichupa/bin/touchpad_endis.sh aborted due to compilation errors.
11th-Jun-2008 07:23 pm (UTC)
виправив. При копіюванні в блог, читання з файлу F (знак менше, F, знак більше) сприйняло за тег...)))
А я одразу не побачив..)))

Тепер наче все Ок...
11th-Jun-2008 08:59 pm (UTC)
Теперь пашет, спасибо =)
12th-Jun-2008 06:08 am (UTC)
надо утащить на ubuntu.org.ua
13th-Jun-2008 08:44 am (UTC)
ссылаясь на автора - без проблем...)))
13th-Jun-2008 03:53 pm (UTC)
ну а как же
12th-Jun-2008 01:21 pm (UTC)
Оффтопик.

Фофудья жива! Вы были членом старой коммуны, вступайте в Новую!
http://community.livejournal.com/fofudija/profile

Пропиарте, пожалуйста, новую Фофудью!
13th-Jun-2008 08:45 am (UTC)
вступил ужо...)))
так а зачем ее пиарить? она сама по себе распиарится..))) да у нее есть свое эхо... каноническое...
This page was loaded Jul 14th 2009, 10:38 am GMT.