jak uruchomić suwak powiększania (i inne przyciski) Microsoft Natural Ergonomic Keyboard 4000?

21

Używam Microsoft Natural Ergonomic Keyboard 4000 na Ubuntu 10.10. Działają klawisze multimedialne (głośność, odtwarzanie / pauza), a także przycisk Poczta i kalkulator.

Teraz chciałbym użyć suwaka powiększenia, jeśli to możliwe, chciałbym użyć do tego przewijania stron. Czy jest jakiś sposób, aby to włączyć?

Martin Ueding
źródło
2
Zobacz askubuntu.com/questions/471802/… . Poprzednie odpowiedzi tutaj mogą być nieaktualne.
mat

Odpowiedzi:

18

Utwórz plik /etc/udev/rules.d/98-ms-ergo.ruleso następującej treści:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

Spowoduje to zamapowanie klawisza powiększenia na stronę w górę / stronę w dół bez zmiany zainstalowanych plików /lib/udev.

Po dodaniu wystarczy odłączyć i ponownie podłączyć klawiaturę, aby zaczęła działać.

Kees Cook
źródło
Działa
W przypadku Microsoft Ergonomic 7000 modelem wydaje się być 071d (uzyskany przez lsusb) zamiast 00db - więc jeśli ktoś spróbuje tego za 7000, prawdopodobnie powinien zastąpić 00db 071d w powyższym pliku. W każdym razie w moim przypadku (Ubuntu 14.04), to nie działa, być może ma to związek z faktem evtest, że suwak zoomu nie wyzwala żadnego zdarzenia, w przeciwieństwie do większości innych klawiszy klawiatury Ergonomic 7000, które działają. Nie jestem pewien, że jak przycisk Web / Home nie wykazuje żadnego wyjścia w evtestobaj - choć Ubuntu czyni go odebrać.
mat
1
Nie mogę też zmusić 4000 do pracy 14.04. Nie widzę wydarzeń w xev.
Michael
Próbowałem tego 14.10 i nie działało.
Rubens Mariuzzo
@Cocoabean xevteż nie działa dla mnie. Co to jest evtest /dev/input/event3. Jeśli event3nie ma żadnej reakcji na ten klucz, przetestuj za pomocą innych zdarzeń ( event[0..9]).
Nicolás,
9

Na Xubuntu 13.10 (być może także na Ubuntu 13.10) to samo można zrobić w następujący sposób:

Edytuj kluczowe mapowania w /lib/udev/hwdb.d/60-keyboard.hwdb:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Biegać sudo udevadm hwdb --update

Restart.

Konstantin K.
źródło
1
Pracowałem dla mnie 14.04
Amir Uval
Moja 60-keyboard.hwdb miała istniejący wpis dla MNEK4K z klawiaturą: usb: b0003v045Ep00DB *. Zmiana akcji nie działała. Dodanie nowego wpisu do tych akcji działało.
Alrekr,
Działa jak urok 16.04. Używałem „góra” i „dół” (zamiast odpowiednio „pageup” i „pagedown”), aby uzyskać płynniejsze przewijanie podczas przeglądania stron internetowych. Wielkie dzięki!
Pierre
Możesz zamapować na katakanai katakanahiragana(lub dowolny inny nieużywany kod dostępu z hal.freedesktop.org/quirk/quirk-keymap-list.txt ) zamiast aliasu do istniejących kluczy. W ten sposób możesz rozpoznać i używać klawiszy w połączeniu z modyfikatorami do przełączania głośności, języka, rozmiaru itp. (Skonfiguruj menedżera okien, aby korzystać z dwóch nowych super-klawiszy).
dmitry_romanov
4

Aby skonfigurować ergonomiczną klawiaturę Microsoft 4000, musimy utworzyć plik konfiguracyjny zawierający deklarację klawiatury i rekordy mapowania klawiszy.

Aby to zrobić, należy określić trzy rodzaje informacji:

  • Rodzaj klawiatury
  • Klawisz, scancodektóry jest rzeczywistym klawiszem na klawiaturze
  • Klawisz namedo przypisania żądanej funkcjonalności do wybranego klawisza

Najpierw znajdź typ klawiatury:

W terminalu uruchom następującą komendę:

lsusb 

wyjście określa typ klawiatury:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

Pojawia się po ID. W tym przypadku tak jest045e:00db

Następnie znajdź scancode i nazwę klucza.

Aby je ustalić, używamy evtestprogramu, który wylogowuje informacje o zdarzeniu określonego urządzenia na terminalu:

evtest

Jeśli nie masz programu, zainstaluj go, uruchamiając następujące polecenie:

sudo apt-get install evtest

Po uruchomieniu evtestprogramu otrzymujemy następujące dane wyjściowe:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

Wyjście jest dość oczywiste, wstaw odpowiednią liczbę dla klawiatury, która tutaj jest liczbą, 3a następnie naciśnij Enter:

Spowoduje to wyświetlenie wielu informacji na terminalu i zakończy się następującymi wierszami:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

Teraz po każdym naciśnięciu klawisza na klawiaturze wyrzuca kluczowe informacje. Na przykład klawisz Slash obok prawego klawisza Shift pokazuje:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

Pierwszy wiersz dziennika zawiera informacje o rzeczywistym klawiszu na klawiaturze, takie jak ten, scancodektóry następuje po wartości. W tym przypadku jest to 70038

Drugi wiersz zawiera przypisane informacje o funkcjonalności, takie jak nazwa klucza. W tym przypadku jest to SLASH . Sprawdź pozostałe klucze, aby znaleźć ich odpowiednie nazwy.

Krótko mówiąc:

  • Nasz typ klawiatury to: 045e: 00db
  • Kod klucza Slash to: 70038
  • Nazwa klucza do przypisania to SLASH

Po zebraniu niezbędnych informacji tworzymy plik konfiguracyjny:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

Naciśnij, iaby aktywować tryb wstawiania i wpisz następujące polecenie:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Zapisz i wyjdź, naciskając, escapea następnie pisząc :wqi naciskając enter.

Następnie uruchom następujące dwa polecenia, aby konfiguracja została zastosowana:

sudo udevadm hwdb --update
sudo udevadm control --reload

Na koniec odłącz klawiaturę i podłącz ją ponownie.

Kilka uwag na temat pliku konfiguracyjnego:

  • Format pliku powinien być dokładnie taki, jak pokazano, przestrzeń przed mapowaniem rekordów ma kluczowe znaczenie.
  • Zamiast sudoeditkorzystać z dowolnego innego edytora tekstu, pamiętaj tylko o przestrzeganiu dokładnego formatu pliku, jak wyjaśniono powyżej.
  • Do typu klawiatury dodano dwa znaki: vi pktóre oznaczają sprzedawcę i produkt. Są również ważne.
  • Typ klawiatury jest zapisany wielkimi literami w pliku konfiguracyjnym. Nasz typ klawiatury to 045e: 00db, ale w konfiguracji wstawiamy v045Ep00DB *
  • Scancode klucza pojawia się zaraz po nim KEYBOARD_KEY_
  • Nazwa klucza pojawia się małymi literami w pliku konfiguracyjnym
  • Po tym samouczku możesz dostosować prawie każdy klawisz na klawiaturze.
varDumper
źródło
3

Problemem jest to, że evdev kierowca ignoruje keycodes> 255 .
Rozwiązanie, dzięki Marco Chiappero :

1) musisz zdefiniować wszystkie potrzebne remapowania (w formie 
„scancode keycode”) i umieść je w pliku pod „/ lib / udev / keymaps /” 
(na przykład stworzyłem tam logitech-lx710-cordless). Możesz znaleźć
scancodes przy użyciu evtest ("sudo evtest / dev / input / eventX", gdzie X jest twoim 
urządzenie z klawiaturą. Bądź ostrożny, czasami te dodatkowe klucze są odsłonięte
inne urządzenie lub interfejs myszy: np. event3 -> kbd, event4 ->
mysz i dodatkowe klawisze). Oto przykładowe dane wyjściowe:

Zdarzenie: czas 1294153475.909379, typ 4 (Różne), kod 4 (ScanCode), wartość c1028
„c1028” to wartość scancode, którą zamierzasz umieścić w pliku mapy klawiszy 
wybierz numer z input.h jak opisano wcześniej i przekonwertuj go na 
szesnastkowy. Następnie zapisz parę remapów w swoim pliku, być może opisową
komentarz, jak to:

0xC1028 0x9a # przycisk obracania

Iteruj dla każdego klucza> 255.

2) musisz powiedzieć udev, aby stosował ten plik odwzorowania za każdym razem, gdy napotka 
na klawiaturze, edytuj więc plik „/lib/udev/rules.d/95-keymap.rules” 
reguła udev, która pasuje do twojego sprzętu. Proszę nie prosić mnie o zdefiniowanie reguły
ty. 
UWAGA: możesz natychmiast zastosować plik mapy klawiszy, pisząc samodzielnie 
„sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE” i 
zweryfikuj to ponownie za pomocą evtest.

Teraz możesz użyć edytora skrótów Gnome, aby sprawdzić, czy klucze są teraz 
użyteczne w X i twórz nowe skróty. Jednak może się zdarzyć, że nie
keyym przypisany jest do tego kodu (więc zobaczysz 0xXY zamiast XF86Foo). 
Możesz zobaczyć aktualne odwzorowania poprzez xmodmap -pke, zapisz dane wyjściowe w pliku 
plik i edytuj go, jeśli potrzebujesz (pełna lista kodów kluczy jest dostępna w
„/ usr / lib / X11 / XKeysymDB”).
Po dodaniu kluczy do mapowanych kluczy możesz zapisać ten plik
jako ~ / .Xmodmap (lub jako / etc / X11 / Xmodmap, jeśli chcesz zastosować się do każdego użytkownika).
desgua
źródło
Dochodzę do wniosku, że przyciski, które chcę, to c022d i c022e, ale nie mogę znaleźć wejścia. H.
Martin Ueding
Jak rozumiem (ale nie mogę testu, bo nie ma tego sprzętu) tak naprawdę nie potrzebują input.h, wystarczy edytować ten plik /lib/udev/rules.d/95-keymap.rules. (Może znajdować się tutaj w Launchpad, gdzie można znaleźć osoby z tym samym sprzętem, dlatego mogą bardziej pomóc w bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 ). Czy edytowałeś wcześniej wspomniany plik?
desgua
1
Jest to zdecydowanie zbyt techniczne i niezorganizowane rozwiązanie dla większości ludzi. Kilka poważnych luk: brak pomocy w określeniu odpowiedniego / dev / input / eventX, niejasne kroki pomieszane z informacjami kontekstowymi i prośby o nie pytanie o instrukcje tworzenia map klawiszy.
Alain O'Dea,
1
evtest nie jest nawet domyślnie instalowany, co czyni go jeszcze gorszym.
Alain O'Dea,
Dzięki próbom i błędom odkryłem, że moją klawiaturą jest / dev / input / event3 i evtest nie odbiera żadnych zdarzeń z suwaka powiększenia.
Alain O'Dea,
0

Na moim komputerze, dodatkowe klucze (HomePage, Search, Calc itp.) I zoom zostały wysłane przez / dev / input / event5, podczas gdy zwykłe klucze zostały wysłane przez / dev / input / event4. Wartość klucza powiększenia zgadza się z przepływem kolejki.

niclas
źródło