Jak zmienić mapowanie menu kontekstowego na inny klawisz w systemie Linux?

19

Właśnie kupiłem thinkpad Lenovo i jestem z tego wszystkiego dumny. Wydaje się równie solidny jak jądro Linux: P.

Problem polega na tym, że Lenovo zdecydowało się usunąć klucz menu kontekstowego, który jest kluczem do kliknięcia prawym przyciskiem myszy. Zastąpili go klawiszem ekranu drukowania. Moja klawiatura ma część numeryczną z kilkoma przyciskami nad nią. Istnieje klawisz szkła powiększającego, który chciałbym zmienić, aby otworzyć menu kontekstowe lub być klawiszem prawego przycisku myszy. Czy można to zrobić?

Próbowałem szukać innych powiązanych pytań, ale znalazłem tylko pytania i odpowiedzi dotyczące dodawania opcji do menu kontekstowego Nautilus. Chcę zmapować fizyczny klawisz mojej klawiatury, aby otworzyć to menu. Dokładnie tak jak wcześniej. Wygląda również na to, że Dell upuszcza ten klawisz na klawiaturze Inspiron. Nie wiem, co się dzieje, ponieważ używam klawiatury bardziej niż myszy.

Z góry dziękuję.

Jhonnytunes
źródło
3
Zainstaluj xbindkeys z sudo apt-get install xbindkeys. Następnie uruchom terminal xbindkeys -ki wpisz klucz, który chcesz zmienić. Czy możesz dodać wynik do swojego pytania?
Seth
„NoCommand” m: 0x50 + c: 46 Mod2 + Mod4 + l
Jhonnytunes,
Kto chciałby mieć klawisz Print Screen, w którym oczekiwałby klawisza Menu? Naprawdę zastanawiam się, jak pijani mogą się pojawiać, aby pracować w Lenovo. W każdym razie pamiętaj, że nie potrzebujesz .Xmodmapgenerowanego przez xmodmap -pke, możesz po prostu umieścić powiązanie w pustym pliku. Zobacz także, co @Baha_hi odkryło poniżej.
J. Katzwinkel

Odpowiedzi:

13

To trochę skomplikowane, ale możesz to zrobić. Wykonaj następujące kroki:

Wykryj kod dostępu

  1. Uruchom, xevaby wykryć kod dostępu:

    xev | grep keycode
    
            state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
            state 0x0, keycode 107 (keysym 0xff67, Menu), same_screen YES,
            state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    
  2. Naciśnij klawisz, który chcesz ponownie skonfigurować. Dane wyjściowe w terminalu pokażą ci keycode(uważaj, może mieć kilka).

Mapowanie testowe

  1. Tymczasowo ustaw nowe mapowanie, dla mnie to keycode 107:

    xmodmap -e "keycode  107 = Return NoSymbol Return"
    

Jeśli klucz zachowuje się zgodnie z oczekiwaniami, możesz zapisać konfigurację.

Zapisz swoją konfigurację

  1. Zapisz bieżącą tabelę $HOMEmap klawiszy do swojego , aby zastąpić defau:

    xmodmap -pke > ~/.Xmodmap
    
  2. Utwórz lub edytuj, ~/.xinitrcaby załadować konfigurację:

    $EDITOR ~/.xinitrc
    
  3. Dodaj następujące wiersze

    if [ -f $HOME/.Xmodmap ]; then
            /usr/bin/xmodmap $HOME/.Xmodmap
    fi
    

Cieszyć się

Większość powyższych informacji pochodzi z artykułu ArchWiki .

Ed Villegas
źródło
Tam jest problem. Kiedy nacisnę przycisk „l” jest zaznaczony. Sprawdziłem to na xev i podałem kod 46, który jest przypisany do litery L l. Może nie ma kodu do pobrania?
Jhonnytunes,
@Jhonnytunes. Sprawdź, czy układ klawiatury jest prawidłowy. Możesz zmienić swój model, wpisując `sudo dpkg-rekonfiguruj konfigurację klawiatury`.
Ed Villegas,
Wciąż ten sam zachowanie. Próbowałem różnych modeli Thinkpad i nic.
Jhonnytunes,
BTW, mój thinkpad to E530c i nie pojawia się na liście klawiatury.
Jhonnytunes,
Jeśli to jest twój układ klawiatury może kluczem obok «Delete» jest rzeczywiście «Menu kontekstowe» (funkcja szukasz). W przeciwnym razie zmień konfigurację innego klucza lub zapytaj bezpośrednio biurko Lenovo, który układ wybrać.
Ed Villegas,
12

Znalazłem tutaj, że użycie: shift+ F10otwiera menu kontekstowe.

Wiem, że nie jest to najlepsze rozwiązanie, ale pomyślałem, że może to pomóc w tymczasowym użyciu!

PS: Mam też e530c i przetestowałem to na Debianie 7 (Wheezy).

Bahax
źródło
3

W końcu znalazłem sposób na zrobienie tego po wielu godzinach testów i nie udało mi się: D

Przede wszystkim zainstaluj xautomation:

sudo apt-get install xautomation

Następnie przejdź do karty Skrót sekcji Klawiatura w Ustawieniach systemu Ubuntu. Najpierw przejdź do pozycji Zrzuty ekranu i przypisz działania do innego klawisza lub wyłącz je, jeśli chcesz. Klawisz PrtSc (Drukuj) zastąpiłem czarnym przyciskiem Thinkpad (Launch1).

Teraz przejdź do sekcji Skróty niestandardowe i dodaj skrót. nazwij to jak chcesz, np. Menu. W polu Command wstaw to:

xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'

Praca jest skończona! Działa jak cud;)

Danial Behzadi
źródło
2

To załatwiło sprawę. Dla mnie kodem przycisku „PrtSc” na moim thinkpadzie jest 107. Znalazłem to dzięki narzędziu „xev” w Ubuntu.

xmodmap -e "keycode  107 = Menu"

To jest tymczasowa zmiana.

Możesz zrobić to na stałe, dodając to polecenie do / etc / profile, a będzie ono wykonywane przy każdym uruchomieniu i będzie to trwała zmiana.

Wskaźnik zerowy
źródło
1

Niedawno nabyłem Lenovo E550 i miałem ten sam problem, rozwiązałem go, używając xte(od xautomation) razem z xmodmap.

Dlaczego inne odpowiedzi nie działają całkowicie?

  1. Odpowiedź @Ed Villegas (ani @Null Pointer ) nie zadziała, ponieważ niektóre klawisze znajdujące się powyżej części numerycznej same w sobie nie są unikalnymi kluczami ( np . Klawisz blokady jest powiązany z kombinacją Super+ L). Gdy xevjest używany do próby znalezienia kodu blokady, zwraca zarówno kod, jak Superi kod L, wystarczy interpretować xevlinię wyjściową wiersz po wierszu.

  2. W przypadku @Bahax i @John Finegan : Shift+ F10jest klawiszem menu kontekstowego, nie działa we wszystkich aplikacjach i nie zapewnia takich samych funkcji jak Menu. Jeśli wybierzesz plik w eksploratorze plików i naciśniesz Menumenu kontekstowe, sam plik powinien się wyskakować, nie dzieje się tak z kombinacją Shift+ F10, zamiast tego zapewnia menu kontekstowe dla okna.

  3. @Danial Behzadi ma podobne podejście do ludzi z 2. pozycji, ale łącząc kombinację klawiatury z jednym klawiszem za pomocą symulatora naciśnięcia klawisza, połączy klawisz z Shift+ F10i zapewni ten sam wynik.

Odpowiedź, która działa

Ważne jest, aby wziąć pod uwagę, że klawisz, którego nie ma na klawiaturze ThinkPad, to Menu(to jest jego nazwa), pokazany na poniższym obrazku:

Klawisz menu

Chociaż klucz nie jest obecny, jego kod dostępu powinien istnieć na komputerze, można go znaleźć, drukując tabelę kodów, za pomocą xmodmap -pke | grep Menuktórej powinien dać ci coś takiego:

Wyjście xmodmap

Mając to na uwadze, zainstaluj xautomation(w celu użycia xtedo symulacji naciśnięcia klawisza) jak w @Danial Behzadi odpowiedź:

sudo apt-get install xautomation

I utwórz niestandardowy skrót, w Triggerze naciśnij klawisz, który chcesz być skrótem, i Actionwklej xte 'key Menu'. Zastosuj i przetestuj.

Hans
źródło