Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-04-04 23:54:38

  peadyr - Użytkownik

peadyr
Użytkownik
Skąd: Chełmno
Zarejestrowany: 2008-05-26

klawisze specjalne Sony Vaio VPCF11M1E

Cześć.
Mam lapka Sony Vaio VPCF11M1E a nim debiana jessie 64 z dystrybucyjnym jądrem 3.13-1-amd64, xfce i ligtdm. Poprawnie działają mi tylko 3 przyciski regulacji jasności i przełączania wyświetlacza. Przycisk usypiania jest wykorzystywany przez xfce powera managera, jak go wyłączę to przycisk usypiania wyłącza mi wyświetlacz i muszę zamknąć system przyciskiem zasilania. Usypianie przez pm-suspend w terminalu działa ok.

opierałem sie na linkach:
https://wiki.archlinux.org/index.php/Sony_Vaio_VPC-F11M1E#Using_udev
http://code.google.com/p/vaio-f11-linux/wiki/ProgrammableKeys (acpi_listen)

w /lib/udev/rules.d/95-keymap.rules mam:

Kod:

ENV{DMI_VENDOR}=="Sony*", KERNELS=="input*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony"

# Older Vaios have some different keys
ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="*PCG-C1*|*PCG-K25*|*PCG-F1*|*PCG-F2*|*PCG-F3*|*PCG-F4*|*PCG-F5*|*PCG-F6*|*PCG-FX*|*PCG-FRV*|*PCG-GR*|*PCG-TR*|*PCG-NV*|*PCG-Z*|*VGN-S360*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-old"

# Some Sony VGN/VPC models have yet another one
ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="VGN-AR71*|VGN-FW*|VGN-Z21*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-vgn"
ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="VPC*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-vpc"

wygląda że używany jest plik /lib/udev/keymaps/module-sony (jak zamieniłem tu keycodes jasności to przyciski faktycznie działały odwrotnie):

Kod:

0x06 mute # Fn+F2
0xAE volumedown # Fn+F3 bylo 07
0xB0 volumeup # Fn+F4 bylo 08
0x09 brightnessdown # Fn+F5 
0x0A brightnessup # Fn+F6 
0x0B switchvideomode # Fn+F7
0x0E zoom # Fn+F10
0x10 suspend # Fn+F12

Kod:

/lib/udev/findkeyboards 
AT keyboard: input/event0
Unknown type: input/event17
module: input/event3

jedno urządzenie rozpoznaje część przycisków:

Kod:

 /lib/udev/keymap -i input/event3
Press ESC to finish, or Control-C if this device is not your primary keyboard
scan code: 0x09   key code: brightnessdown
scan code: 0x0A   key code: brightnessup
scan code: 0x0B   key code: switchvideomode
scan code: 0x0D   key code: zoomout
scan code: 0x0E   key code: zoomin
scan code: 0x10   key code: suspend
scan code: 0x1F   key code: help
scan code: 0x19   key code: prog1
scan code: 0x3B   key code: vendor

i tu działają jasność i wadliwie usypianie, podejrzewam że reszta zadziała też lub będę mógł przypisać do key code (albo zrobić swój key code) jakąś akcję/skrypt  tylko nie wiem gdzie i jak TU POMÓŻCIE proszę.

na drugim urządzeniu przy rozpoznawaniu wstawia pełno enterów i pokazuje pozostałe przyciski:

Kod:

/lib/udev/keymap -i input/event0
Press ESC to finish, or Control-C if this device is not your primary keyboard
scan code: 0xA0   key code: mute

scan code: 0xAE   key code: volumedown

scan code: 0xB0   key code: volumeup

tutaj nie wiem gdzie key code volumedown ma być dalej zdefiniowany żeby faktycznie przyciszał.

i jeszcze acpi_listen:

Kod:

button/mute MUTE 00000080 00000000 K
button/volumedown VOLDN 00000080 00000000 K
button/volumeup VOLUP 00000080 00000000 K
video/brightnessdown BRTDN 00000087 00000000 K
sony/hotkey SNY5001:00 00000001 00000010
sony/hotkey SNY5001:00 00000001 0000003b
video/brightnessup BRTUP 00000086 00000000 K
sony/hotkey SNY5001:00 00000001 00000011
sony/hotkey SNY5001:00 00000001 0000003b
video/switchmode VMOD 00000080 00000000 K
sony/hotkey SNY5001:00 00000001 00000012
sony/hotkey SNY5001:00 00000001 0000003b

dalej powiększanie i pomniejszanie:

Kod:

sony/hotkey SNY5001:00 00000001 00000014
sony/hotkey SNY5001:00 00000001 0000003b
sony/hotkey SNY5001:00 00000001 00000015
sony/hotkey SNY5001:00 00000001 0000003b

usypianie:

Kod:

button/suspend SUSP 00000080 00000000 K
sony/hotkey SNY5001:00 00000001 00000017
sony/hotkey SNY5001:00 00000001 0000003b

i 3 bonusowe Assists S1 i VAIO

Kod:

sony/hotkey SNY5001:00 00000001 00000028
^[[28~sony/hotkey SNY5001:00 00000001 00000038
button/prog1 PROG1 00000080 00000000 K
sony/hotkey SNY5001:00 00000001 00000020
sony/hotkey SNY5001:00 00000001 00000038
button/vendor VNDR 00000080 00000000 K
sony/hotkey SNY5001:00 00000001 00000049
sony/hotkey SNY5001:00 00000001 00000038

jak zamieniłem jasność i działały przyciski odwrotnie to acpi_listen też pokazywał info "video/*" odwrotnie czyli jakby acpi dostawał info od udev???

z tego co widzę to mam dwa urządzenia wejściowe event3 : sony i event0: jakiś noname, chcę im poprzypisywać akcje np poprawne usypianie bez xfce powera managera czy regulację głośności a innym po prostu skrypt uruchamiający np terminal albo przeglądarkę, nie wiem już jak to zrobić i czy za pomocą udev tylko czy acpi (events/actions)

Z góry dzięki za pomoc i cierpliwość w czytaniu posta...!

Ostatnio edytowany przez peadyr (2014-04-05 00:31:39)

Offline

 

#2  2014-04-05 00:13:41

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: klawisze specjalne Sony Vaio VPCF11M1E

Offline

 

#3  2014-04-05 00:40:26

  peadyr - Użytkownik

peadyr
Użytkownik
Skąd: Chełmno
Zarejestrowany: 2008-05-26

Re: klawisze specjalne Sony Vaio VPCF11M1E

przeglądnąłem i widzę tam tylko rozpoznawanie przez acpi (events/actions), jakie jest "elegantsze" rozwiązanie w debianie przez acpi czy udev? u mnie widzę jakby działała konfiguracja udev tylko...
chyba nie do końca rozumiem współistnienie w tej kwetsii acpi i udev?

Offline

 

#4  2014-04-05 00:47:50

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: klawisze specjalne Sony Vaio VPCF11M1E

Jeżeli udev rozpoznaje wszystkie zdarzenia, to naskrob sobie odpowiednie skrypty tak odpalane.
Chyba nie ma znaczenia czy to przez acpi czy udev. Nawet udev powinien być mniej problematyczny.

Chodzi tylko o stworzenie skryptów dopasowanych do swojego sprzętu bo te standardowe ze nie zawsze działają na każdym sprzęcie prawidłowo.

Offline

 

#5  2014-04-05 01:15:54

  fervi - Użytkownik

fervi
Użytkownik
Zarejestrowany: 2010-03-14

Re: klawisze specjalne Sony Vaio VPCF11M1E

A takie ogólne pytanie

Czy nie można na sztywno ustawić w Xfce4 skrótów klawiszowych? W zasadzie to robiłem (np, skrót od kalkulatora) i nie będzie dłubania w konsoli (chyba, że przyciski w ogóle nie działają) [a nie - że nie mają ustawionych funkcji]

Fervi

Offline

 

#6  2014-04-05 01:21:37

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: klawisze specjalne Sony Vaio VPCF11M1E

E tam skrypty. Wystarczy prosta regułka i plik z mapowaniem klawiszy.

Plik na wzór /etc/udev/rules.d/95-keymap-media-keyboard-elite.rules :

Kod:

KERNEL=="event*", ACTION=="add", SUBSYSTEM=="input", SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c30f", RUN+="/lib/udev/keymap $name /lib/udev/keymaps/logitech-media-keyboard-elite"

Musisz odpowiednie zmienne sobie wyłapać -- zajrzyj do

Kod:

udevadm info /dev/input/event*

i posprawdzaj, które urządzenie odpowiada ci za klawiaturę. Potem napisz sobie plik na wzór  /lib/udev/keymaps/logitech-media-keyboard-elite :

Kod:

0xC01BC        216        # 0xD8    # CHAT

ten pierwszy to SCANCODE ten drugi to KEYCODE. KEYCODE może być w postaci decymalnej, hexalnej albo zwykłej nazwy. Info na temat KEYCODE masz w /usr/include/linux/input.h  -- wybierasz wolne kody poniżej 255

Jak nie wiesz jaki KEYCODE mają twoje klawisze, odpal evtest:

Kod:

root:/etc/udev# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      Logitech Logitech USB Keyboard
/dev/input/event1:      Logitech Logitech USB Keyboard
/dev/input/event2:      Power Button
/dev/input/event3:      Power Button
/dev/input/event4:      PC Speaker
/dev/input/event5:      A4Tech USB Mouse
/dev/input/event6:      ACPI Virtual Keyboard Device
Select the device event number [0-6]: 1
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0xc30f version 0x110
Input device name: "Logitech Logitech USB Keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 131 (KEY_UNDO)
    Event code 138 (KEY_HELP)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 168 (KEY_REWIND)
    Event code 171 (KEY_CONFIG)
    Event code 172 (KEY_HOMEPAGE)
    Event code 182 (KEY_REDO)
    Event code 208 (KEY_FASTFORWARD)
    Event code 210 (KEY_PRINT)
    Event code 217 (KEY_SEARCH)
    Event code 234 (KEY_SAVE)
    Event code 319 (?)
    Event code 328 (BTN_TOOL_QUINTTAP)
    Event code 329 (?)
    Event code 330 (BTN_TOUCH)
    Event code 331 (BTN_STYLUS)
    Event code 418 (KEY_ZOOMIN)
    Event code 419 (KEY_ZOOMOUT)
    Event code 420 (KEY_ZOOMRESET)
    Event code 421 (KEY_WORDPROCESSOR)
    Event code 423 (KEY_SPREADSHEET)
    Event code 425 (KEY_PRESENTATION)
    Event code 430 (KEY_MESSENGER)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
Event: time 1396653191.923332, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022d
Event: time 1396653191.923332, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 1
Event: time 1396653191.923332, -------------- SYN_REPORT ------------
Event: time 1396653192.083331, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022d
Event: time 1396653192.083331, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 0
Event: time 1396653192.083331, -------------- SYN_REPORT ------------

To co ma więcej niż 255 nie będzie wykrywane i trzeba przemapować. A do tego potrzebne SCANCODE , które wyciągniesz przez

Kod:

# /lib/udev/keymap -i input/event1
Press ESC to finish, or Control-C if this device is not your primary keyboard
scan code: 0xC022D   key code: zoomin
scan code: 0xC022E   key code: zoomout

Jak skończysz pisać regułę i plik od mapowania, to dajesz

Kod:

udevadm control --reload

i powinno działać, eventualnie reset.

fervi -- skróty możesz ustawić na poziomie xservera, co uczyni je globalnymi i odpornymi na zmianę środowiska, zainteresuj się plikiem .xbindkeysrc

Ostatnio edytowany przez morfik (2014-04-05 01:23:11)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)