Praca na laptopie to częste podłączanie i odłączanie myszek na USB. Bardzo często są one różne i posiadają spore ilości klawiszy. Moja myszka A4TECH służy mi już dwa lata. Standardowy sterownik mouse jednak nie radzi sobie poprawnie z wykrywaniem i rozpoznawaniem numerów wszystkich klawiszy. Klawiszy na myszce mam 9 (wraz z akcjami rolek). Tylko evdev odpowiednio skonfigurowany wykrył mi wszystkie klawisze. Poniżej znajduje się wycinek mojego xorg.conf który odpowiada za automatyczne wykrywanie myszek HID.
Section “InputDevice”
Identifier “Evdev Mouse”
Driver “evdev”
Option “evBits” “+1-2″
Option “keyBits” “~272-287″
Option “relBits” “~0-2 ~6 ~8″
Option “Pass” “3″
Option “Emulate3Buttons”
EndSection

Następnie do sekcji Section “ServerLayout” dodajemy wpis:

InputDevice “Evdev Mouse” “AlwaysCore”

oczywiście powinniśmy mieć przed tą linią dodany wpis od normalnej myszki lub touchpada, przykładowo:
InputDevice “Synaptics TouchPad” “CorePointer” # sterownik synaptics do touchpada
Jeżeli mamy tylko myszkę na usb powinniśmy dać wpis

InputDevice “Evdev Mouse” “CorePointer”

W przypadku CorePointer podczas startu Xy sprawdzają czy do komputera jest podłączona jakaś myszka, jeżeli nie to zwracają błąd i zamykają się. W przypadku „AlwaysCore” sterownik jest ładowany a Xy się nie wyłączają niezależnie czy jakaś mysz jest podłączona do komputera czy nie.

Evdev znajduje się w każdej dystrybusji.

Wymagane jest również włączenie evdev w kernelu. Dystrybucyjne kernele powinny
już posiadać odpowiednie opcje.

opcja: CONFIG_INPUT_EVDEV=y 

Sphere: Related Content

Od pewnego czasu mam nowy komputer. Laptopa Toshiba Satellite pro L20-102 wymieniono mi na Satellite a200-1iw . Dla zainteresowanych; jest to dość spory skok technologiczny. Ale nie o tym będzie traktował ten wpis. Jednym z wielu problemów jaki miałem to to iż nie mogłem wyłączyć touchpada poprzez ACPI. Jak to zazwyczaj bywa z „linuksem”, system ten daje sporo możliwości. Na początek instalujemy sterownik synaptics. Można go znaleźć w każdej dystrybucji. U mnie w Archu jest to paczka extra/synaptics 0.14.6.99-1.
Po instalacji zaczynamy konfigurację xów. Osobiście polecam używanie w laptopach sterownika synaptics w połączeniu z evdev aby mieć możliwość automatycznego wykrywania urządzeń HID. O tym będzie kolejny wpis.
Oto wycinek mojego xorg.conf:

Section “InputDevice”

Identifier “Synaptics TouchPad”
Driver “synaptics”
Option “Device” “/dev/psaux”
Option “Protocol” “auto-dev”
Option “LeftEdge” “0″
Option “RightEdge” “5000″
Option “TopEdge” “2000″
Option “BottomEdge” “4000″
Option “FingerLow” “30″
Option “FingerHigh” “30″
Option “MaxTapTime” “130″
Option “MaxTapMove” “220″
Option “VertScrollDelta” “100″
Option “HorizScrollDelta” “0″
Option “MinSpeed” “0.06″
Option “MaxSpeed” “0.15″
Option “AccelFactor” “0.009″
Option “SHMConfig” “true”

EndSectionSection “ServerLayout”

# InputDevice “Mouse1″ “CorePointer”
InputDevice “Synaptics TouchPad” “CorePointer”
….

EndSection

Teraz małe skrypcenie. Jak włączać i wyłączać touchpada. Metoda jest prosta :

#!/bin/bash
#touchpadonoff
    stan=`synclient -l | grep TouchpadOff | awk ‘{print $3}’`

if [ $stan == “0″ ]; then
    synclient TouchpadOff=1
elif [ $stan == “1″ ]; then
    synclient TouchpadOff=0
fi
Jeżeli wykonamy skrypt to touchpad zmieni stan z włączonego na wyłączony i odwrotnie. Teraz tylko możemy już sobie podbindować to pod jakiś program lub klawisz i gotowe.

A co jeżeli chcemy aby po podłączeniu zewnętrznej myszki touchpad automatycznie nam się wyłączał. Piszemy inny skrypt i dodajemy go do autostartu albo .xinit`a . Poniższy skrypt w pythonie sprawdza w pętli czy nie podłączyliśmy jakiejś myszli a jeżeli tak to wyłącza touchpada.

#! /usr/bin/python
#touchpaddetect
import os

import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop

DBusGMainLoop(set_as_default=True)

system_bus = dbus.SystemBus()

def device_removed(device_name):
global hal, initial_mice
mice = hal.FindDeviceByCapability(”input.mouse”)
# initial_mice
if device_name in mice or device_name in initial_mice:
enable_trackpad()

def device_added(device_name):
global hal, initial_mice
mice = hal.FindDeviceByCapability(”input.mouse”)
if device_name in mice or device_name in initial_mice:
disable_trackpad()

def enable_trackpad():
os.system(”synclient TouchpadOff=0″)

def disable_trackpad():
os.system(”synclient TouchpadOff=1″)

system_bus.add_signal_receiver(
handler_function=device_removed,
signal_name=”DeviceRemoved”,
path=”/org/freedesktop/Hal/Manager”,
dbus_interface=”org.freedesktop.Hal.Manager” )

system_bus.add_signal_receiver(
handler_function=device_added,
signal_name=”DeviceAdded”,
path=”/org/freedesktop/Hal/Manager”,
dbus_interface=”org.freedesktop.Hal.Manager” )

hal = system_bus.get_object(’org.freedesktop.Hal’, ‘/org/freedesktop/Hal/Manager’)

initial_mice = hal.FindDeviceByCapability(”input.mouse”)

# see how many mice we have when we start up.
if len(initial_mice) == 1:
enable_trackpad()
else:
disable_trackpad()

loop = gobject.MainLoop()
loop.run()

Mamy już automatyczne włączanie i wyłączanie touchpada oraz mały skrypt do ręcznej zmiany stanu. Wypadało by podpiąć pierwszy mały skrypcik pod jakiś klawisz. Do tego potrzebne nam będą : xev którym wykryjemy kod klawisza oraz xmodmap który przypisze nam nazwę danemu klawiszowi.

Przykładowy plik konfiguracyjny .xmodmap znajdujący się u mnie w katalogu domowym.
keycode 174 = XF86AudioRaiseVolume
keycode 176 = XF86AudioLowerVolume
keycode 222 = XF86Standby
keycode 178 = XF86WWW
keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext

Teraz zostało nam przypisać do danego klawisza wykonywaną przez niego akcję. Ja użyłem do tego xbindkeys ale znak kilka innych narzędzi radzących sobie tak samo.
Przykładowy wycinek pliku konfiguracyjnego .xbindkeysrc :

“touchpadonoff”
XF86WWW

Może są metody łatwiejsze i szybsze ale wszystkie wymienione programy  znajdują się standardowo w dystrybujcji i są częścią projektu xów.

Sphere: Related Content

Spory czas nie pisałem. Dziś przerwę te długie milczenie. W pierwszym dzisiejszym wpisie chciałem wszystkim życzyć spokojnych, radosnych oraz rodzinnych Świąt Bożego Narodzenia. Wielu łask oraz sporo miłości Bożej i tej ludzkiej oraz lepszego 2008 roku. Tym co czekają w tym przyszłym roku na „cud gospodarczy” życzę aby ich marzenia się spełniły.

Sphere: Related Content

Minęły kolejne wakacje. Prawdopodobnie już ostatnie. Trzy miesiące wolnego już nigdy nie będą miały miejsca. :) Postanowiłem troszeczke odkurzyć blog.

Kilka pomysłów na kolejne wpisy jest, jednak jak zawsze nie chce mi sie pisać.
Myślę że jak dam rady z obsługą słownika to zaczne pisać regularnie. ;) (jeszcze z tym utf8 problemy są na serwerze :/ )

Sphere: Related Content

Wszystkie osoby które znam korzystające jednocześnie z KDE oraz beryla lub compiza mają problem przy starcie KDE. Nikt ze znajomych nie potrafił dodać do autostartu KDE menadżerów generujących efekty graficzne. Powodowało to liczne problemy. Jednym z poważniejszych problemów było zapętlanie się compiza i beryla podczas startu. Czasami jedynym wyjściem było zabicie xów oraz wykasowanie zapamiętanej sesji KDE. Kilka minut spędziłem wczoraj nad problemem zanim udało mi się uzyskać zadowalającą konfiguracje. Poniżej zamieściłem zawartość pliku compiz.desktop który należy umieścić w katalogu ~/.kde/Autostart .

[Desktop Entry]
Comment=
Comment[PL]=
Encoding=UTF-8
Exec=export LIBGL_ALWAYS_INDIRECT=1\ncompiz –replace ccp &\nemerald &
GenericName=
GenericName[PL]=
Icon=
MimeType=
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-KDE-autostart-after=kdesktop

Jedynie kicker może czasami “gubić ” ikonki w trayu. Problem ten można rozwiązać dopisująć killall kicker& kicker& .

Jeżeli twoją platformą renderującą nie jest AIGLX wykasuj z pliku export LIBGL_ALWAYS_INDIRECT=1\n .

Sphere: Related Content

Od pewnego czasu rozwijana jest nowa technologia tożsamości internetowej. OpenID, bo o nim mowa, pozwala na logowanie za pomocą jednego hasła i adresu url na liczne serwisy; może to być sklep internetowy, bank czy po prostu blog. Obecnie coraz większa rzesza entuzjastów wprowadza w swoich serwisach logowanie poprzez OpenID. W wordpressie wtyczka OpenID pozwala na przezroczyste logowanie się i dodawanie komentarzy. Pomysł OpenID można porównać do Microsoft Passport. Jednak OpenID nie jest związane z żadną firmą i nie występuje nadmierne gromadzenie naszych danych w jednym miejscu. Każdy z nas może postawić własny serwer więc możemy być dostawcą sami dla siebie. Na zajęcia przygotowaliśmy razem z kolegą prezentacje jak działa i czym dokładnie jest OpenID. Myślę że troche przybliży wam tematykę. Przykłądowym dostawcą tożsamości jest polski serwis OpenID.pl

Sphere: Related Content

Od pewnego czasu dostępna jest galeria pod adresem galeria.wodor.org . Zainteresowanych zapraszam do rejestracji i przeglądania zdjęć. Większość galerii jest widoczna dopiero po aktywacji konta.

Udało mi się skonfigurować wordpressa. Jak się okazało problemem była konfiguracja w php.ini. Troszeczke się namęczyłem zanim doszedłem w którym miejscu znajdował się błąd. Problem objawiał się tym że nie było możliwości przeglądania stron administracyjnych oraz dało się tylko raz wykonać skrypty strony główej. Do głównej tabeli wordpressa były wpisywane wtedy informacje o konfiguracji widgetow na blogu. Blog ten będzie moją stroną domową, nie chciało mi się pisać swoich skryptów. Forma bloga wydała mi się najciekawsza.

Sphere: Related Content