Witaj Gościu, jeżeli to czytasz to znaczy że nie jesteś zarejestrowany/zalogowany. Kliknij by się zarejestrować. Rejestracja zajmie mniej niż 30 sekund , a dzięki temu zniknie Ci ten dymek oraz będziesz miał pełne możliwośći personalizacji forum do własnych potrzeb.
Sterowanie aplikacji pilotem za pomocą /dev/input/event
Pokaż wyniki od 1 do 4 z 4

Temat: Sterowanie aplikacji pilotem za pomocą /dev/input/event

  1. #1
    Avatar suncez
    suncez jest nieaktywny Super Moderator
    Mężczyzna
    Dystrybucja: Debian Mandriva
    Dołączył
    Aug 2004
    Postów
    3,195
    Wątków
    142
    Downloads
    11
    Uploads
    0
    Siła Reputacji
    281
    Reputacja
    3732

    Sterowanie pilotem za pomocą /dev/input/event i lirc

    Sterowanie pilotem za pomocą /dev/input/event i lirc część 1

    Moja karta TV to Kworld KW-TV878RF MPEG TV STATION/PCI
    Kod:
    lspci
    00:09.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
    00:09.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
    lspci -n
    00:09.0 0400: 109e:036e (rev 11)
    00:09.1 0480: 109e:0878 (rev 11)
    Do kernela 2.6.18 nie miałem szczególnych kłopotów z uruchomieniem sterowania pilotem za pomocą lirc. Wystarczyła instalacja i konfiguracja lirc oraz dodanie do systemu modułów lirc_dev i lirc_gpio

    Niestety moduł lirc_gpio przestał się poprawnie kompilować. Po nałożeniu łatki na źródła kernela kompilacja się udaje, ale modułu nie można załadować
    Kod:
    lirc_gpio: Unknown symbol bttv_get_cardinfo
    lirc_gpio: Unknown symbol bttv_get_gpio_queue
    Na szczęście obsługa pilotów wielu kart telewizyjnych na różnych układach została dodana do video4linux. Moją kartę na chipie bt878 obsługuje moduł bttv, ładowałem go do tej pory przez /etc/modprobe.d/bttv (dla Mdv to będzie /etc/modprobe.conf)
    Kod:
    alias video0 bttv
    options bttv radio=1 card=78 tuner=5 gbuffers=4
    card 78 to Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF a tuner 5 to Philips PAL BG

    Sytuacja wygląda tak: lirc nie startuje bo nie ma modułu lirc_gpio - pora na zmiany trzeba wykorzystać możliwości modułu bttv. Jeśli mamy szczęście to szybciutko odkryjemy na czym ruszy pilot. Lirc będzie teraz wykorzystywał sterownik dev/input, sprawdzamy czy nasza karta dostępna jest jako urządzenie event w /dev/input.
    Kod:
    cat /proc/bus/input/devices
    Powinna być tam pozycja odnosząca sie do nazwy karty lub sterownika, np:
    Kod:
     I: Bus=0018 Vendor=0000 Product=0000 Version=0000
     N: Name="Pinnacle PCTV"
     P: Phys=i2c-0/0-0047/ir0
     H: Handlers=kbd event2
     B: EV=100003
     B: KEY=108fc010 2100802 0 0 0 0 48000 2180 c0000801 9e1680 7bb80 0 4000
    
    lub
    
     I: Bus=0001 Vendor=109e Product=036e Version=0001
     N: Name="bttv IR (card=137)"
     P: Phys=pci-0000:00:08.0/ir0
     H: Handlers=kbd event2
     B: EV=100003
     B: KEY=2c0814 100004 0 0 0 4 2008000 2090 2001 1e0000 7ff80 0 0
    Uwaga!
    Kernel powinien mieć wkompilowaną obsługę CONFIG_INPUT_KEYBOARD, dystrybucyjne powinny mieć.
    Kod:
    cat /boot/config-`uname -r` | grep CONFIG_INPUT_KEYBOARD
    CONFIG_INPUT_KEYBOARD=y
    Wiemy wtedy, że dla naszej karty N: Name="Pinnacle PCTV" czy też N: Name="bttv IR (card=137)" mamy utworzone urządzenie event2. Powinno być ono w /dev/input. Jeśli tak to mamy z górki, jeśli w wyniku polecenia nie ma karty TV tak jak u mnie
    Kod:
    cat /proc/bus/input/devices
    I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
    N: Name="AT Translated Set 2 keyboard"
    P: Phys=isa0060/serio0/input0
    S: Sysfs=/class/input/input0
    U: Uniq=
    H: Handlers=kbd event0
    B: EV=120013
    B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe
    B: MSC=10
    B: LED=7
    
    I: Bus=0019 Vendor=0000 Product=0002 Version=0000
    N: Name="Power Button (FF)"
    P: Phys=LNXPWRBN/button/input0
    S: Sysfs=/class/input/input1
    U: Uniq=
    H: Handlers=kbd event1
    B: EV=3
    B: KEY=100000 0 0 0
    
    I: Bus=0019 Vendor=0000 Product=0001 Version=0000
    N: Name="Power Button (CM)"
    P: Phys=PNP0C0C/button/input0
    S: Sysfs=/class/input/input2
    U: Uniq=
    H: Handlers=kbd event2
    B: EV=3
    B: KEY=100000 0 0 0
    
    I: Bus=0019 Vendor=0000 Product=0003 Version=0000
    N: Name="Sleep Button (CM)"
    P: Phys=PNP0C0E/button/input0
    S: Sysfs=/class/input/input3
    U: Uniq=
    H: Handlers=kbd event3
    B: EV=3
    B: KEY=4000 0 0 0 0
    
    I: Bus=0010 Vendor=001f Product=0001 Version=0100
    N: Name="PC Speaker"
    P: Phys=isa0061/input0
    S: Sysfs=/class/input/input4
    U: Uniq=
    H: Handlers=kbd event4
    B: EV=40001
    B: SND=6
    
    I: Bus=0011 Vendor=0002 Product=0005 Version=0000
    N: Name="ImPS/2 Generic Wheel Mouse"
    P: Phys=isa0060/serio1/input0
    S: Sysfs=/class/input/input5
    U: Uniq=
    H: Handlers=mouse0 event5
    B: EV=7
    B: KEY=70000 0 0 0 0 0 0 0 0
    B: REL=103
    to trzeba popróbować z innymi wartościami opcji card= w pliku /etc/modprobe.d/bttv

    Opcje tam zawarte są wykorzystywane przy ładowaniu modułu bttv, także przez polecenie modprobe, dlatego przed próbą znalezienia działającego modelu karty należy zmodyfikować wpisy w pliku bttv, do poniższej postaci, aby nie przeszkadzały
    Kod:
    alias char-major-81 videodev
    alias char-major-81-0 bttv
    Teraz reboot i najlepiej w dwóch, trzech konsolach rozpoczynamy test. W jednej korzystamy z polecenia
    Kod:
    modprobe bttv card=x tuner=y
    w drugiej z
    Kod:
    cat /proc/bus/input/devices
    Za x wstawiamy kolejne numery kart - są dostępne od 1 do 149 (patrz dokumentacja kernela), za y numer działającego tunera - u mnie cały czas 5. Jeśli po załadowaniu modułu bttv nie pojawi się event dla naszej karty to wyładowujemy moduł bttv
    Kod:
    modprobe -r bttv
    i próbujemy z kolejnym numerem karty. Czasem moduł bttv nie będzie chciał się wyładować, bo będzie używany przez inny moduł, poleceniem lsmod sprawdzimy co to za jeden i wyładujemy go wcześniej.
    Kod:
    lsmod | grep bttv
    bttv                  164884  2 bt878
    Kod:
    modprobe -r bt878 bttv
    Uwaga!
    Oczekiwany event może pojawić się przy kilku numerach modeli kart, ale po pierwsze karta może wtedy nie działać poprawnie - może być brak obrazu, dźwięku, może być szum. Po drugie nawet jak będzie poprawny obraz i dźwięk to pilot może nie działać. W pełni działający układ znalazłem dopiero przy karcie numer 120.
    Kod:
    modprobe bttv card=120 tuner=5
    
    N: Name="AT Translated Set 2 keyboard"
    P: Phys=isa0060/serio0/input0
    S: Sysfs=/class/input/input0
    U: Uniq=
    H: Handlers=kbd event0
    B: EV=120013
    B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe
    B: MSC=10
    B: LED=7
    
    I: Bus=0019 Vendor=0000 Product=0002 Version=0000
    N: Name="Power Button (FF)"
    P: Phys=LNXPWRBN/button/input0
    S: Sysfs=/class/input/input1
    U: Uniq=
    H: Handlers=kbd event1
    B: EV=3
    B: KEY=100000 0 0 0
    
    I: Bus=0019 Vendor=0000 Product=0001 Version=0000
    N: Name="Power Button (CM)"
    P: Phys=PNP0C0C/button/input0
    S: Sysfs=/class/input/input2
    U: Uniq=
    H: Handlers=kbd event2
    B: EV=3
    B: KEY=100000 0 0 0
    
    I: Bus=0019 Vendor=0000 Product=0003 Version=0000
    N: Name="Sleep Button (CM)"
    P: Phys=PNP0C0E/button/input0
    S: Sysfs=/class/input/input3
    U: Uniq=
    H: Handlers=kbd event3
    B: EV=3
    B: KEY=4000 0 0 0 0
    
    I: Bus=0001 Vendor=109e Product=036e Version=0001
    N: Name="bttv IR (card=120)"
    P: Phys=pci-0000:00:09.0/ir0
    S: Sysfs=/class/input/input4
    U: Uniq=
    H: Handlers=kbd event4
    B: EV=100003
    B: KEY=2c0814 100004 0 0 0 4 2008000 2090 2001 1e0000 4400 0 ffc
    
    I: Bus=0010 Vendor=001f Product=0001 Version=0100
    N: Name="PC Speaker"
    P: Phys=isa0061/input0
    S: Sysfs=/class/input/input5
    U: Uniq=
    H: Handlers=kbd event5
    B: EV=40001
    B: SND=6
    
    I: Bus=0011 Vendor=0002 Product=0005 Version=0000
    N: Name="ImPS/2 Generic Wheel Mouse"
    P: Phys=isa0060/serio1/input0
    S: Sysfs=/class/input/input6
    U: Uniq=
    H: Handlers=mouse0 event6
    B: EV=7
    B: KEY=70000 0 0 0 0 0 0 0 0
    B: REL=103
    Jak już trafiłem to po wydaniu polecenia
    Kod:
    irrecord -H dev/input -d /dev/input/event4 /home/suncez/Temp/my-remote
    mogłem z pilota przesyłać kody do komputera i przydzielać im nazwy. irrecord zapisywał wszystko do /home/suncez/Temp/my-remote.

    Najpierw irrecord prosi o przyciśnięcie i przytrzymanie klawisza - musi rozpoznać pilota, potem prosi o wprowadzenie nazwy dla następnego naciśniętego klawisza. Wprowadzamy nazwę, dajemy enter i naciskamy przycisk na pilocie i tak wszystkie klawisze po kolei. Po ostatnim, zgodnie z sugestią irrecord naiskamy enter, trzeba jeszcze dwukrotnie (a może i więcej razy) bardzo szybko nacisnąć dowolny klawisz, aby irrecord dopasował prędkość powtórzeń. Po wszystkim program sie wyłącza a my mamy gotowy plik my-remote z kodami.
    Kod:
    # Please make this file available to others
    # by sending it to <lirc@bartelmus.de>
    #
    # this config file was automatically generated
    # using lirc-0.8.0(userspace) on Sun Jan  4 10:14:46 2009
    #
    # contributed by 
    #
    # brand:                       /home/suncez/Temp/my-remote
    # model no. of remote control: 
    # devices being controlled by this remote:
    #
    
    begin remote
    
      name  /home/suncez/Temp/my-remote
      bits           16
      eps            30
      aeps          100
    
      one             0     0
      zero            0     0
      pre_data_bits   16
      pre_data       0x8001
      gap          150712
      toggle_bit      0
    
    
          begin codes
              power                    0x0074
              source                   0x00E2
              scan                     0x00D9
              mute                     0x0071
              tv/fm                    0x0182
              1                        0x0002
              2                        0x0003
              3                        0x0004
              fm_scan+                 0x0192
              4                        0x0005
              5                        0x0006
              6                        0x0007
              fm_scan-                 0x0193
              7                        0x0008
              8                        0x0009
              9                        0x000A
              fm_freq+                 0x004E
              0                        0x000B
              +                        0x0195
              recall                   0x018B
              fm-freq-                 0x004A
              record                   0x00A7
              stop                     0x0080
              play                     0x00CF
              minimze                  0x0184
              ch+                      0x0192
              zoom                     0x0174
              vol-                     0x0072
              ch-                      0x0193
              vol+                     0x0073
              snapshot                 0x00A4
              mts                      0x0162
              function-                0x000B
              function                 0x008D
              function+                0x004E
              reset                    0x00AD
          end codes
    
    end remote
    Uwaga!
    Jeżeli wcześniej korzystaliśmy z pilota, np. za pomocą modułu lirc_gpio i mieliśmy gotowe pliki konfiguracyjne wykorzystujące nazewnictwo akcji przycisków z dotychczasowego pliku konfiguracyjnego pilota (najczęściej to /etc/lirc/lircd.conf) to korzystając z irrecord warto użyć dotychczasowych nazw przycisków - nie trzeba wtedy poprawiać plików sterujących dotychczas aplikacjam, np. plików ~/.lircrc czy .xawtv

    Pora na konfigurację lirca - edycję plików w /etc/lirc (tak jest w Debianie).
    Plik /etc/lirc/hardware.conf
    Kod:
    # /etc/lirc/hardware.conf
    #
    # Arguments which will be used when launching lircd
    LIRCD_ARGS=""
    
    #Don't start lircmd even if there seems to be a good config file
    #START_LIRCMD=false
    
    #Try to load appropriate kernel modules
    # dla lirc_gpio dajemy true
    LOAD_MODULES=false
    
    # Run "lircd --driver=help" for a list of supported drivers.
    DRIVER="dev/input"
    
    # If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
    # automatically used instead
    DEVICE="/dev/input/by-path/pci-0000:00:09.0--event-ir"
    MODULES=""
    
    # Default configuration files for your hardware if any
    LIRCD_CONF="lircd.conf"
    LIRCMD_CONF=""
    Nie wpisujemy do niego
    Kod:
    DEVICE="/dev/input/event4"
    bo ta wartość może się zmienić z każdym restartem systemu czy dodaniem nowego urządzenia. W /dev/input/by-path/ jest dowiązanie do właściwego event skojarzone z naszą kartą po identyfikatorze pci, np. pci-0000:00:09.0--event-ir. Sam event wykorzystujemy tylko tymczasowo, dla wygody przy szczytywaniu kodów.

    Plik /etc/lirc/lircd.conf tworzymy lub modyfikujemy wklejając zawartość utworzonego wcześniej pliku my-remote. Ewentualne wcześniejsze kody pilota warto zarchiwizować - może kiedyś wróci lirc_gpio. W poniższym wierszu pliku możemy podać nazwę naszej karty, np. u mnie to będzie Jetway TV/Capture.
    Kod:
    # brand:                       /home/suncez/Temp/my-remote
    Prawie koniec, trzeba zrestartować usługę lirc
    Kod:
    /etc/init.d/lirc restart
    Tak jest w Debianie jak lirc wstanie bez błędów możemy skontrolować działanie klawiszy odpalając w konsoli program irw - powinien pokazywać kod i nazwę każdego przyciśniętego przycisku pilota. Trzeba jeszcze poprawić plik /etc/modprobe.d/bttv do takiej postaci
    Kod:
    alias char-major-81 videodev
    alias char-major-81-0 bttv
    options bttv card=120 radio=1 tuner=5
    aby moduł bttv ładował się przy starcie systemu z odpowiednimi opcjami. Pozostało jeszcze zrobić pliki konfiguracyjne do sterowania aplikacjami.

    U mnie są dwa takie pliki Podałbym je w drugiej części opisu, ale mi się kolejne posty fatalnie sklejają z pierwszym. - niech ktoś coś napisze.
    Ostatnio edytowane przez suncez ; 03.11.2010 o 21:44
    Regulamin Forum - lektura obowiązkowa Pytania - jak mądrze je zadawać vbcode - jak formatować tekst w postach Reputacja - jak używać przycisków reputacji

  2. Panna Google
    Panna Google jest aktywna
    Avatar Panny Google

    Dołączył
    01-05-2004
    Skąd
    Internet
    Postów
    999
    Pochwał
    159

    Nie lubisz reklam? Zarejestrowani ich nie widzą! Rejestracja





  3. #2
    Avatar vorlog
    vorlog jest nieaktywny Hiperadministrator(ka)
    Mężczyzna
    • Platforma sprzętowa
      • Płyta Główna:
      • ASUS P5L-VM 1394
      • Procesor:
      • PentiumD 3GHz
      • Karta Graficzna:
      • GeForce 8500 GT
      • Karta Dźwiękowa:
      • Creative Labs CA0106 Soundblaster
      • Monitor:
      • Iiyama ProLite B2409HDS
      • Kernel:
      • 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt2-1 (2014-12-08) i686 GNU/Linux
    Dystrybucja: Debian8 Jessie
    Polska
    Dołączył
    Mar 2004
    Skąd
    Dąbrowa Tarnowska
    Wiek
    53
    Postów
    3,789
    Wątków
    108
    Downloads
    2
    Uploads
    0
    Siła Reputacji
    861
    Reputacja
    12400

    Odp: Sterowanie aplikacji pilotem za pomocą /dev/input/event

    Bardzo dobry opis, a ja długi czas nie mogłem poradzić sobie z podobną rzeczą...
    Prosimy o cd.
    V.

    Jeszcze Polska nie zginęła / Isten, áldd meg a magyart


  4. #3
    Avatar suncez
    suncez jest nieaktywny Super Moderator
    Mężczyzna
    Dystrybucja: Debian Mandriva
    Dołączył
    Aug 2004
    Postów
    3,195
    Wątków
    142
    Downloads
    11
    Uploads
    0
    Siła Reputacji
    281
    Reputacja
    3732

    Odp: Sterowanie pilotem za pomocą /dev/input/event i lirc

    Sterowanie pilotem za pomocą /dev/input/event i lirc część 2

    Pliki konfiguracyjne do sterowania kilkoma aplikacjami za pomocą pilota od karty TV
    Plik ~/.lircrc
    Kod:
    # dość prosty i mało odporny na różne przypadki plik ~/.lircrc
    # demon irexec powinien już być uruchomiony (irexec -d)
    
    ## sekcja główna wybór funkcji pilota
    # aktywacja startu aplikacji i np. wyłączenia systemu
    begin
    #    prog = irexec
        button = scan
        mode = start
    #    config = echo "start mode"
    end
    # aktywacja selekcji aplikacji do sterowania
    begin 
    #    prog = irexec
        button = source
        mode = select
    #    config = echo "select mode"
    end
    # irexec i polecenie echo może wysyłać komunikat o wybranej opcji do konsoli, z której uruchomiono irexec&
    # jest to przydatne do testów
    # po zainstalowaniu dodatkowego oprogramowania można otrzymać komunikat w formie OSD na ekranie monitora
    
    ## sekcja startu aplikacji
    begin start
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 0
    #    config = sudo /sbin/shutdown -now
        config = sudo /sbin/halt
        mode   = system
    end
    # umieściłem wyłączenie komputera tutaj bo niżej już jest ciasno od komentarzy
    # sekcji system tymczasem nie ma, nie szukajcie jej :)
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 1
        config = /usr/bin/xawtv > /dev/null 2>&1 &
    #    flags  = startup_mode
        mode   = xawtv
    end
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 2
        config = /usr/bin/audacious > /dev/null 2>&1 &
    #    flags  = startup_mode
        mode   = audacious
    end
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 3
        config = /usr/bin/kradio > /dev/null 2>&1 &
    #    flags  = startup_mode
        mode   = kradio
    end
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 4
        config = /usr/bin/gmplayer -quiet -nofs > /dev/null 2>&1 &
    #    flags  = startup_mode
        mode   = mplayer
    end
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 5
        config = /usr/bin/kaffeine > /dev/null 2>&1 &
    #    flags  = startup_mode
        mode   = kaffeine
    end
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 6
        config = /usr/bin/irxevent & /usr/bin/kuickshow > /dev/null 2>&1 &
    #    config = /usr/bin/irxevent > /dev/null 2>&1 &
    #    flags  = startup_mode
        mode   = kuickshow
    end
    begin
        prog   = irexec
    #    remote = kworld-878
        button = 7
        config = LC_ALL="pl_PL" /usr/bin/xmms > /dev/null 2>&1 &
    #    flags  = startup_mode
        mode   = xmms
    end
    # wolałbym uruchamiać tylko irxevent, ale nie wiem jak potem zabić okno kuickshow z otwartą grafiką
    # czasem tylko takie może być otwarte, teraz przyciskiem power zabijam irxevent i główne okno kuickshow wraz z potomnymi 
    #begin
    #    prog   = irexec
    #    remote = kworld-878
    #    button = 6
    #    config = /usr/bin/kuickshow > /dev/null 2>&1 &
    #    flags  = startup_mode
    #    mode   = kuickshow
    #end
    end start
    # mplayer, kaffeine i kuickshow wolę uruchamiać ręcznie i dopiero wtedy nimi sterować
    # dlatego ich konfigi mam u siebie wyłączone, tak jest chyba prościej
    # uwaga! irxevent należy zakończyć jak każdy inny program
    # remote i flags są opcjonalne jeśli są wyłączone to każda uruchomiona aplikacja jest od razu sterowalna (chyba)
    # widziałem rozwiązania zapobiegające przypadkowemu powtórnemu uruchomieniu aplikacji, ale tymczasem mam dość
    
    ## sekcja selekcji aplikacji do sterowania
    begin select
    begin
        prog = irexec
        button = 1
        mode = xawtv
    #    config = echo "xawtv remote"
    end
    begin
        prog = irexec
        button = 2
        mode = audacious
    #    config = echo "audacious remote"
    end
    begin
        prog = irexec
        button = 3
        mode = kradio
    #    config = echo "kradio remote"
    end
    begin
        prog = irexec
        button = 4
        mode = mplayer
    #    config = echo "mplayer remote"
    end
    begin
        prog = irexec
        button = 5
        mode = kaffeine
    #    config = echo "kaffeine remote"
    end
    begin
        prog = irexec
        button = 6
        mode = kuickshow
    #    config = echo "kuickshow remote"
    end
    begin
        prog = irexec
        button = 7
        mode = xmms
    #    config = echo "xmms remote"
    end
    end select
    # tu specjanie nic nie eksperymentowałem
    # config z poleceniem echo można wyłączyć
    
    ## właściwe polecenia sterujące
    begin xawtv
        begin
            prog = xawtv
            config = eventmap
        end
    end xawtv
    # nie jestem pewny czy to dobre rozwiązanie, ale działa
    
    begin audacious
        begin
            prog = audacious
            button = play
            config = PLAY
        end
        begin
            prog = audacious
            button = record
            config = PAUSE
        end
        begin
            prog = audacious
            button = stop
            config = STOP
        end
        begin
            prog = audacious
            button = power
            config = QUIT
        end
        begin
            prog = audacious
            button = fm_scan+
            config = NEXT
        end
        begin
            prog = audacious
            button = fm_scan-
            config = PREV
        end
        begin
            prog = audacious
            button = fm_freq+
            config = FWD 5
            repeat = 3
        end
        begin
            prog = audacious
            button = fm-freq-
            config = BWD 5
            repeat = 3
        end
        begin
            prog = audacious
            button = vol+
            config = VOL_UP 5
            repeat = 3
        end
        begin
            prog = audacious
            button = vol-
            config = VOL_DOWN 5
            repeat = 3
        end
        begin
            prog = audacious
            button = mute
            config = MUTE
        end
    end audacious
    
    begin xmms
        begin
            prog = xmms
            button = play
            config = PLAY
        end
        begin
            prog = xmms
            button = record
            config = PAUSE
        end
        begin
            prog = xmms
            button = stop
            config = STOP
        end
        begin
            prog = xmms
            button = power
            config = QUIT
        end
        begin
            prog = xmms
            button = fm_scan+
            config = NEXT
        end
        begin
            prog = xmms
            button = fm_scan-
            config = PREV
        end
        begin
            prog = xmms
            button = fm_freq+
            config = FWD 5
            repeat = 3
        end
        begin
            prog = xmms
            button = fm-freq-
            config = BWD 5
            repeat = 3
        end
        begin
            prog = xmms
            button = vol+
            config = VOL_UP 5
            repeat = 3
        end
        begin
            prog = xmms
            button = vol-
            config = VOL_DOWN 5
            repeat = 3
        end
        begin
            prog = xmms
            button = mute
            config = MUTE
        end
    end xmms
    
    begin kradio
        begin
            prog   = kradio
            config = eventmap
            repeat = 1
        end
    #    begin
    #        prog = kradio
    #        button = fm_scan-
    #        config = PREV
    #    end
    #    begin
    #        prog = kradio
    #        button = fm_scan+
    #        config = NEXT
    #    end
    #    begin
    #        prog = kradio
    #        button = fm-freq-
    #        config = CH-SEARCH
    #    end
    #    begin
    #        prog = kradio
    #        button = fm_freq+
    #        config = CH+SEARCH
    #    end
    #    begin
    #        prog = kradio
    #        button = vol+
    #        config = VOL+
    #        repeat = 3
    #    end
    #    begin
    #        prog = kradio
    #        button = vol-
    #        config = VOL-
    #        repeat = 3
    #    end
    #    begin
    #        prog = kradio
    #        button = power
    #        config = QUIT
    #    end
    #    begin
    #        prog = kradio
    #        button = function
    #        config = CH+
    #        repeat = 3
    #    end
    #    begin
    #        prog = kradio
    #        button = reset
    #        config = CH-
    #        repeat = 3
    #    end
    #    begin
    #        prog = kradio
    #        button = tv/fm
    #        config = POWER
    #    end
    #    begin
    #        prog = kradio
    #        button = 1
    #        config = 1
    #    end
    #    begin
    #        prog = kradio
    #        button = 2
    #        config = 2
    #    end
    #    begin
    #        prog = kradio
    #        button = 3
    #        config = 3
    #    end
    #    begin
    #        prog = kradio
    #        button = 4
    #        config = 4
    #    end
    #    begin
    #        prog = kradio
    #        button = 5
    #        config = 5
    #    end
    #    begin
    #        prog = kradio
    #        button = 6
    #        config = 6
    #    end
    #    begin
    #        prog = kradio
    #        button = 7
    #        config = 7
    #    end
    #    begin
    #        prog = kradio
    #        button = 8
    #        config = 8
    #    end
    #    begin
    #        prog = kradio
    #        button = 9
    #        config = 9
    #    end
    #    begin
    #        prog = kradio
    #        button = 0
    #        config = 0
    #    end
    end kradio
    
    begin mplayer
    # OSD
        begin
            button = tv/fm
            prog = mplayer
            config = osd
        end
    # głośność up
        begin
            button = vol+
            prog = mplayer
            config = volume 1
            repeat = 3
        end
    # głośność down
        begin
            button = vol-
            prog = mplayer
            config = volume -1
            repeat = 3
        end
    # wyciszenie
        begin
            button = mute
            prog = mplayer
            config = mute
        end
    # do przodu o 15 sekund
        begin
            button = fm_scan+
            prog = mplayer
            config = seek +15
    #        repeat = 3
        end
    # do tyłu o 15 sekund
        begin
            button = fm_scan-
            prog = mplayer
            config = seek -15
    #        repeat = 3
        end
    # przewiń o 300 sekund do tyłu
        begin
            button = fm-freq-
            prog = mplayer
            config = seek -300
            repeat = 3
        end
    # przewiń o 300 sekund do przodu
        begin
            button = fm_freq+
            prog = mplayer
            config = seek +300
            repeat = 3
        end
    # pauza
        begin 
            button = record
            prog = mplayer
            config = pause
        end
    # stop
        begin 
            button = stop
            prog = mplayer
            config = gui_stop
        end
    # play
        begin 
            button = play
            prog = mplayer
            config = gui_play
        end
    # pełny ekran
        begin
            button = zoom
            prog = mplayer
            config = vo_fullscreen
        end
    # panscan up
        begin 
            button = snapshot
            prog = mplayer
            config = panscan +0.1
            repeat = 2
        end
    # panscan down
        begin
            button = minimze
            prog = mplayer
            config = panscan -0.1
            repeat = 2
        end
    # opóźnienie napisów
        begin
            button = 0
            prog = mplayer
            config = sub_delay -1
        end
    # przyspieszenie napisów
        begin
            button = +
            prog = mplayer
            config = sub_delay +1
        end
    # jasność down
        begin
            button = 3 
            prog = mplayer
            config = brightness -1
            repeat = 3
        end
    # jasność up
        begin
            button = 4
            prog = mplayer
            config = brightness 1 
            repeat = 3
        end
    # kontrast down
        begin
            button = 1 
            prog = mplayer
            config = contrast -1
            repeat = 3
        end
    # kontrast up
        begin
            button = 2
            prog = mplayer
            config = contrast 1 
            repeat = 3
        end
    # nasycenie down
        begin
            button = 7
            prog = mplayer
            config = saturation -1
            repeat = 3
        end
    # nasycenie up
        begin
            button = 8
            prog = mplayer
            config = saturation 1 
            repeat = 3
        end
    # barwa down
        begin
            button = 5
            prog = mplayer
            config = hue -1
            repeat = 3
        end
    # barwa up
        begin
            button = 6
            prog = mplayer
            config = hue 1 
            repeat = 3
        end
    # na wierzchu
        begin
            button = recall
            prog = mplayer
            config = vo_ontop
        end
    # wyłączenie
        begin
            button = power
            prog = mplayer
            config = quit
        end
    end mplayer
    
    begin kaffeine 
        begin
            prog = irexec
            button = play
            config = dcop kaffeine KaffeineIface play
        end
        begin
            prog = irexec
            button = record
            config = dcop kaffeine KaffeineIface pause
        end
        begin
            prog = irexec
            button = stop
            config = dcop kaffeine KaffeineIface stop
        end
        begin
            prog = irexec
            button = fm_scan+
            config = dcop kaffeine KaffeineIface posPlus
        end
        begin
            prog = irexec
            button = fm_scan-
            config = dcop kaffeine KaffeineIface posMinus
        end
        begin
            prog = irexec
            button = fm_freq+
            config = dcop kaffeine KaffeineIface next
        end
        begin
            prog = irexec
            button = fm-freq-
            config = dcop kaffeine KaffeineIface previous
        end
        begin
            prog = irexec
            button = power
            config = dcop kaffeine KaffeineIface quit
        end
        begin
            prog = irexec
                button = vol+
                config = dcop kaffeine KaffeineIface volUp
        end
        begin
            prog = irexec
            button = mute
            config = dcop kaffeine KaffeineIface mute
        end
        begin
            prog = irexec
            button = vol-
            config = dcop kaffeine KaffeineIface volDown
        end
        begin
            prog = irexec
            button = zoom
            config = dcop kaffeine KaffeineIface fullscreen
        end
    end kaffeine
    
    begin kuickshow
        begin
            prog = irxevent
            button = fm_scan-
            config = Key Prior CurrentWindow
        end
        begin
            prog = irxevent
            button = fm_scan+
            config = Key Next CurrentWindow
        end
        begin
            prog = irxevent
            button = fm-freq-
            config = Key KP_Subtract CurrentWindow
    #        repeat = 1
        end
        begin
            prog = irxevent
            button = fm_freq+
            config = Key KP_Add CurrentWindow
    #        repeat = 1
        end
        begin
            prog = irxevent
            button = tv/fm
            config = Key o CurrentWindow
        end
        begin
            prog = irxevent
            button = zoom
            config = Key Return CurrentWindow
        end
        begin
            prog = irxevent
            button = 7
            config = Key 7 CurrentWindow
        end
        begin
            prog = irxevent
            button = 8
            config = Key 8 CurrentWindow
        end
        begin
            prog = irxevent
            button = 9
            config = Key 9 CurrentWindow
        end
        begin
            prog = irxevent
            button = snapshot
            config = Key b CurrentWindow
            repeat = 3
        end
        begin
            prog = irxevent
            button = 1
            config = Key shift-b CurrentWindow
            repeat = 3
        end
        begin
            prog = irxevent
            button = minimze
            config = Key c CurrentWindow
            repeat = 3
        end
        begin
            prog = irxevent
            button = 3
            config = Key shift-c CurrentWindow
            repeat = 3
        end
        begin
            prog = irexec
    #        prog = irxevent
            button = power
    #        config = /bin/kill -s 9 kuickshow
    #        config = Key ctrl-shift-w CurrentWindow
            config = /usr/bin/killall kuickshow irxevent
        end
        begin
            prog = irexec
            button = power
            config = /bin/kill -s 9 irxevent
        end
    # nie wiemm jak zabić samodzielne okno z grafiką przy użyciu irexec
        begin
            prog = irxevent
            button = 4
            config = Key Left CurrentWindow
            repeat = 3
        end
        begin
            prog = irxevent
            button = 6
            config = Key Right CurrentWindow
            repeat = 3
        end
        begin
            prog = irxevent
            button = 2
            config = Key Up CurrentWindow
            repeat = 3
        end
        begin
            prog = irxevent
            button = 5
            config = Key Down CurrentWindow
            repeat = 3
        end
    end kuickshow
    
    ## jednym klawiszem wybieram tryb włączania aplikacji, drugim wskazuję aplikację, do sterowania
    # uruchomiona aplikacja jest od razu "sterowalna".nie trzeba jej wskazywać
    # na OSD tymczasem nie mam chęci się porywać, może byłoby i przydatne
    
    ## parę moich uwag
    # do definicji danego klawisza można przypisać dwie, trzy akcje umieszczając dwa, trzy wpisy config =
    # będą wykonywane kolejno przy kolejnych naciśnięciach przycisku
    # parametr repeat określa dopuszczalną liczbę powtórzeń akcji przy wciśnięciu i przytrzymaniu klawisza
    # podziękowania dla Hagala za uwagi i pomoc :)
    Plik ~/.xawtv
    Kod:
    [global]
    #ratio = 4:3
    ratio = 0:0
    freqtab = europe-east
    pixsize = 128 x 96
    pixcols = 1
    jpeg-quality = 75
    keypad-ntsc = no
    keypad-partial = yes
    osd = yes
    osd-position = 30 , 20
    #use-wm-fullscreen = yes
    mixer = line
    
    # [Station name]
    # capture = overlay | grabdisplay | on | off
    # input = Television | Composite1 | S-Video | ...
    # norm = PAL | NTSC | SECAM | ... 
    # channel = #
    # fine = # (-128..+127)
    # key = keysym | modifier+keysym
    # color = #
    # bright = #
    # hue = #
    # contrast = #
    
    [defaults]
    group = main
    norm = PAL
    input = television
    capture = over
    #color = 35%
    #bright = 57%
    #hue = 41%
    #contrast = 44%
    
    [jedynka]
    channel = R8
    fine = +2
    capture = on
    color = 17%
    bright = 46%
    contrast = 40%
    
    [dwójka]
    channel = R10
    fine = +3
    capture = on
    color = 43%
    bright = 54%
    contrast = 40%
    
    [trójka]
    channel = R11
    fine = +2
    capture = on
    color = 46%
    bright = 48%
    contrast = 40%
    
    #[czwórka]
    #channel = 52
    #capture = on
    #color = 32%
    #bright = 47%
    #contrast = 46%
    
    [satelita]
    channel = 36
    capture = on
    color = 50%
    bright = 48%
    contrast = 43%
    
    [eventmap]
    lirc-key-recall = volume mute
    lirc-key-vol+ = volume inc
    lirc-key-vol- = volume dec
    lirc-key-fm_scan+ = setstation next
    lirc-key-fm_scan- = setstation prev
    lirc-key-zoom = fullscreen
    lirc-key-power = quit
    lirc-key-fm-freq- = bright inc
    lirc-key-mts = bright dec
    lirc-key-function = contrast inc
    lirc-key-reset = contrast dec
    lirc-key-fm_freq+ = color inc
    lirc-key-mute = color dec
    lirc-key-0 = hue inc
    lirc-key-+ = hue dec
    Fragment z pliku ~/.kde/share/config/kradiorc dotyczący sterowania pilotem.
    Kod:
    LIRC_APPLICATION_QUIT=power
    LIRC_CHANNEL_NEXT=fm_scan+
    LIRC_CHANNEL_PREV=fm_scan-
    LIRC_DIGIT_0=0
    LIRC_DIGIT_1=1
    LIRC_DIGIT_2=2
    LIRC_DIGIT_3=3
    LIRC_DIGIT_4=4
    LIRC_DIGIT_5=5
    LIRC_DIGIT_6=6
    LIRC_DIGIT_7=7
    LIRC_DIGIT_8=8
    LIRC_DIGIT_9=9
    LIRC_PAUSE=
    LIRC_POWER_OFF=tv/fm
    LIRC_POWER_ON=tv/fm
    LIRC_RECORD_START=
    LIRC_RECORD_STOP=
    LIRC_SEARCH_NEXT=fm_freq+
    LIRC_SEARCH_PREV=fm-freq-
    LIRC_SLEEP=
    LIRC_VOLUME_DEC=vol-
    LIRC_VOLUME_INC=vol+
    Uwaga!
    Niektóre wywołania czy nazwy programów użyte w plikach są specyficzne dla mojej konfiguracji systemu. Czasem modyfikuję opcje startowe, zmieniam przy tym lokalizacje czy nazwy plików. No i jeszcze plik startujący używane do sterowania demony irexec i irxevent

    Plik ~/.kde/Autostart/pilot (musi mieć atrybut wykonywalny)
    Kod:
    #!/bin/bash
    
    IREXEC=`ps -A | grep -w irexec | awk '{print $1}'`
    IRXEVENT=`ps -A | grep -w irxevent | awk '{print $1}'`
    
    case $1 in
    1)
    if [ -n "$IREXEC" ]; then
    kill -9 $IREXEC
    /usr/bin/irexec ~/.lircrc &
    else
    /usr/bin/irexec ~/.lircrc &
    fi
    ;;
    2)
    if [ -n "$IRXEVENT" ]; then
    kill -9 $IRXEVENT
    else
    exit 0
    fi
    ;;
    *)
    $0 1
    sleep 1
    $0 2
    exit 0
    ;;
    esac
    W załączniku są spakowane opisy z których korzystałem. To wszystko, miłego klikania

    Dopisane
    Może komuś się przyda informacja na jakich numerach kart miałem jeszcze aktywny event: 6, 24, 34, 38, 50, 70, 72, 104, 113, 123, 124, 127, 139, 144.
    Telewizja, radio i pilot działa u mnie poprawnie na numerkach 120 i 137

    Jeśli masz kartę na innym chipie polecam załączone opisy (lirc-event.tar.gz), są tam informacje o działaniach czasem niezbędnych dla pewnych modeli kart. Aha, te dziwne znaczki w opisach w moim pliku .lircrc to efekt kodowania - jeszcze iso8859-2.

    Uwaga !
    W Lennym, na na nowym xorgu xawtv często startowało mi nieme, zaczęło się tak dziać po doinstalowaniu kilkunastu programów. Po przywróceniu poprawnego numeru karty 78 głos w xawtv jest zawsze, no ale nie ma event. Spróbowałem innego numeru karty 137, bez głosu. Spróbowałem innego numeru tunera i bingo, na numerku 23 działa. Stąd wniosek warto przetestować wszystkie numery kart i wszystkie numery tunerów - u mnie 5 i 23 to Philips. Zmieniłem także wpis w /etc/modprobe.d/bttv na taki
    Kod:
    alias video0 bttv
    options bttv card=120 tuner=23 radio=1 gbuffers=4
    Attached Files
    Ostatnio edytowane przez suncez ; 03.02.2011 o 22:37
    Regulamin Forum - lektura obowiązkowa Pytania - jak mądrze je zadawać vbcode - jak formatować tekst w postach Reputacja - jak używać przycisków reputacji

  5. #4
    Dołączył
    Aug 2006
    Skąd
    Cyberspace
    Wiek
    33
    Postów
    1,721
    Wątków
    395
    Downloads
    8
    Uploads
    0
    Siła Reputacji
    139
    Reputacja
    1700

    Odp: Sterowanie aplikacji pilotem za pomocą /dev/input/event

    Odgrzewam temat. mam zainstalowanego Lirca i pliki hardware.conf i lirc conf ściągnąłem z neta do karty winfast i pilota y04G0051 bo tak mi pisze na pilocie. Nie wiem jednak czy ta konfiguracja jest ok bo n w kaffeine działa mi tylko zmiana programów przyciskami od 1-0 oraz sterowanie siłą głosu, dlatego postanowiłem stworzyć własny plik konfiguracyjny przy pomocy narzędzia irrecord. Znalazłem jaki mam event, u mnie akurat 13 i zaczynam zabawę zgodnie z instrukcją naciskam każdy klawisz i przytrzymuję, ale to nie działa bo dostaję komunikat za każdym razem:
    .irrecord: gap not found, can't continue
    irrecord: closing '/dev/input/event13'
    Nie wiem o co chodzi i co robię źle, pokaże kroki po kolei:
    cat /proc/bus/input/devices
    mi pokazuje:
    I: Bus=0001 Vendor=107d Product=6654 Version=0001
    N: Name="cx88 IR (Leadtek WinFast DTV180"
    P: Phys=pci-0000:05:00.2/ir0
    S: Sysfs=/devices/pci0000:00/0000:00:1e.0/0000:05:00.2/rc/rc0/input13
    U: Uniq=
    H: Handlers=kbd event13
    B: PROP=0
    B: EV=100013
    B: KEY=10afc336 63508d8 0 0 0 0 80110000 190 4801 e1680 4400 100000 10000ffc
    B: MSC=10
    więc:
    root@darek-PC:/home/darek# irrecord -H dev/input -d /dev/input/event13 /home/darek/myremote

    irrecord - application for recording IR-codes for usage with lirc

    Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

    irrecord: initializing '/dev/input/event13'
    This program will record the signals from your remote control
    and create a config file for lircd.


    Usually it's not necessary to create a new config file for devinput
    devices. A generic config file can be found at:
    Index of /remotes/devinput
    You should try this config file before creating your own config file.

    A proper config file for lircd is maybe the most vital part of this
    package, so you should invest some time to create a working config
    file. Although I put a good deal of effort in this program it is often
    not possible to automatically recognize all features of a remote
    control. Often short-comings of the receiver hardware make it nearly
    impossible. If you have problems to create a config file READ THE
    DOCUMENTATION of this package, especially section "Adding new remote
    controls" for how to get help.

    If there already is a remote control of the same brand available at
    Index of /remotes you might also want to try using such a
    remote as a template. The config files already contain all
    parameters of the protocol used by remotes of a certain brand and
    knowing these parameters makes the job of this program much
    easier. There are also template files for the most common protocols
    available in the remotes/generic/ directory of the source
    distribution of this package. You can use a template files by
    providing the path of the file as command line parameter.

    Please send the finished config files to <lirc@bartelmus.de> so that I
    can make them available to others. Don't forget to put all information
    that you can get about the remote control in the header of the file.

    Press RETURN to continue.


    Hold down an arbitrary button.
    .irrecord: gap not found, can't continue
    irrecord: closing '/dev/input/event13'
    Co jest nie tak? Nadmienię, że jeśli każdy z klawiszy pilota po prostu pojedyńczo pnacisnę bez przytrzymywania to uda mi się przejść przez całego pilota i błędu nie ma, ale nie wiem jak to zakończyć a plik wynikowy jest pusty.
    Linux registered user #440406

Informacje o wątku

Users Browsing this Thread

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Uprawnienia

  • Nie możesz zakładać nowych wątków
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •