Jak sprawić, by Ctrl + Alt działał jak Alt gr w Ubuntu?

11

Niedawno przerzuciłem się na Ubuntu na moim laptopie i jedną rzeczą, która prawie skłoniła mnie do powrotu do systemu Windows, jest fakt, że nie mogę zmusić Ctrl+ Altdo działania jak Alt gr.

Programowałem od kilku lat i na przykład jestem tak przyzwyczajony do tworzenia znaku „$”, naciskając ctrl+ alt+ 4. Tutaj w Ubuntu muszę użyć „Alt gr + 4”, która prawie doprowadza mnie do szaleństwa ...

Czy można to naprawić?

elitasson
źródło
1
próbowałeś grać z mapowaniami klucza compose? help.ubuntu.com/community/ComposeKey
Tim Kennedy
Możesz to zrobić za pomocą xmodmappolecenia. Sprawdź to askubuntu.com/questions/5095/typing-using-key-combinations
Bichoy
Wypróbuj xmodmap, który jest dostępny w pakiecie x11-xserver-utils w Ubuntu. Umożliwia ponowne mapowanie dowolnej kombinacji klawiszy.
Warren,
@ elitasson Jeśli znajdziesz odpowiedź na swoje pytanie, prosimy o podanie go jako oddzielnej odpowiedzi.
Bernhard
@Bernhard Nie, nie możesz tego zrobić za pomocą xmodmap. Nie obsługuje przekształcania kombinacji Ctrl + Alt w odrębny modyfikator. Ale myślę, że możesz z XKB .
Gilles „SO- przestań być zły”

Odpowiedzi:

3

Możesz dodać globalne skróty, aby pisać specjalne znaki. Używam tego często w moim niemieckim układzie klawiatury z Ubuntu (w systemie Windows działa to od razu po wyjęciu z pudełka).

Dodałem następujące skróty:

Shift+ Enter+, 7aby napisać list{

Shift+ Enter+, 0aby napisać list}

Shift+ Enter+, 8aby napisać list[

Shift+ Enter+, 9aby napisać list]

Aby dodać te skróty, będziesz potrzebować xbindkeysi xvkbd:

sudo apt-get install xbindkeys xvkbd

Następnie edytuj plik konfiguracyjny:

vim ~/.xbindkeysrc

I dodaj następujące wiersze (edytuj je według własnego uznania):

"xvkbd -xsendevent -text '{'"
    m:0xc + c:16
    Control+Alt + 7

"xvkbd -xsendevent -text '['"
    m:0xc + c:17
    Control+Alt + 8

"xvkbd -xsendevent -text ']'"
    m:0xc + c:18
    Control+Alt + 9

"xvkbd -xsendevent -text '}'"
    m:0xc + c:19
    Control+Alt + 0

"xvkbd -xsendevent -text '\[backslash]'"
    m:0xc + c:20
    Control+Alt + ssharp

"xvkbd -xsendevent -text '\[asciitilde]'"
    m:0xc + c:35
    Control+Alt + plus

Następnie załaduj ponownie xbindkeys:

xbindkeys -f ~/.xbindkeysrc

Dzięki światu za udostępnienie tego ( http://forum.ubuntuusers.de/topic/strg-%2B-alt-alt-gr-wie-in-windows/ ).

cheneym
źródło
1
Czy możesz wyjaśnić, co robi linia m: 0xc + c: XX?
elitasson
1
Wiem, że to stare pytanie i odpowiedź, ale tylko dla tych, którzy chcą dodać więcej znaków, takich jak | lub @ lub €: Klucze używane w c:XXsą, o ile mi wiadomo, uniwersalne, więc nie będziesz mieć szczęścia w wyszukiwaniu. Możesz jednak znaleźć kod klucza lokalnie, instalując i uruchamiając „xev” w linii poleceń. Spowoduje to wydrukowanie wszystkich działań na klawiaturze i myszy, więc musisz przewinąć nieco, aby znaleźć „swoją” postać.
Nano Miratus
1
Na przykład naciśnięcie <(w celu skonfigurowania |) podczas uruchamiania xev powoduje wydrukowanie tego: KeyRelease event, serial 40, synthetic NO, window 0x4c00001, root 0x7e, subw 0x0, time 35363548, (135,60), root:(903,472), state 0x0, keycode 94 (keysym 0x3c, less), same_screen YES, XLookupString gives 1 bytes: (3c) "<" XFilterEvent returns: FalsePotrzebny numer jest zawsze w trzeciej linii, po „kodzie klucza”. W tym przypadku 94.
Nano Miratus
2

Po tym, jak nie udało mi się uruchomić go z kombinacją klawiszy xbindkeys i xvkbd / xte (nigdy nie mogłem uzyskać pewnych znaków {, [,],}, \ itd., Aby zachowywały się poprawnie, być może dlatego, że używam skandynawskiego układu klawiatury), W końcu znalazłem proste i praktyczne rozwiązanie: Autokey. Oto dokładne instrukcje, jak to działa:

  1. Zainstaluj Autokey za pomocą oprogramowania Ubuntu (użyłem wersji GTK, nie KDE) lub przez: „sudo apt-get install autokey-gtk”.
  2. Skonfiguruj jeden skrypt na klucz, np. Dla {użyj tego kodu: keyboard.send_keys("<alt_gr>+7")i ustaw skrót klawiszowy na Ctrl + Alt + 7 (najpierw ustaw skrót na 7, a następnie dodaj Ctrl i Alt jako modyfikatory). Działa to przynajmniej w przypadku najważniejszych kluczy do pisania kodu: {[]}.
  3. Dodaj autokey do aplikacji startowych (wyszukaj „start”, aby go znaleźć), a następnie dodaj program z „autokey” jako poleceniem.

To rozwiązanie będzie działać na wszystko, co działa w bieżącej sesji X (myślę), ale nie zadziała, jeśli rozpoczniesz nową sesję terminala za pomocą Ctrl + Alt + (F2-F6).

Jim Björklund
źródło
1

Chociaż nadal nie odpowiada to na twoje pytanie, uważam, że jest to łatwiejsze rozwiązanie niż inne odpowiedzi.

Aby R-ALTpraca była jak AltGr, możesz dodać następujący wiersz do ~/.xinitrc:

setxkbmap -option lv3:ralt_switch

Można znaleźć inne sposoby przejścia na trzeci poziom (który zwykle osiąga się za pomocą AltGrklucza), a nowe sposoby można zdefiniować w /usr/share/X11/xkb/symbols/level3.

oleks
źródło
1

Oto, co zrobiłem, aby L-Altklucz działał dokładnie tak samo jak Altgrklucz. Nie próbowałem z CtrlAltkluczem

Polega na modyfikacji pliku level3

W terminalu zmień katalog:

cd /usr/share/X11/xkb/symbols

zrób kopię pliku level3:

sudo cp level3 level3.old

edytuj poziom 3 za pomocą dowolnego edytora tekstu:

sudo gedit level3 

Powinieneś znaleźć taki blok:

  key <RALT> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level3_Shift ]
    };
  modifier_map Mod5   { ISO_Level3_Shift };

Dodaj kopię bloku za pomocą LALT (lewy alt) zamiast RALT (altgr):

  key <LALT> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level3_Shift ]
    };
  modifier_map Mod5   { ISO_Level3_Shift };

Teraz powinny być 3 inne bloki zaczynające się od key <RALT>

Zrób to samo z nimi.

Zapisz i wyjdź.

Quentin Donner
źródło
0

Używam specjalnych znaków tylko wtedy, gdy piszę kod, więc udało mi się to naprawić, to Sublime Text.

W Preferencjach -> Powiązania klawiszy - Użytkownik

wstaw następujące:

[
{ "keys": ["ctrl+alt+2"], "command": "insert", "args": {"characters": "@"} },
{ "keys": ["ctrl+alt+3"], "command": "insert", "args": {"characters": "£"} },
{ "keys": ["ctrl+alt+4"], "command": "insert", "args": {"characters": "$"} },
{ "keys": ["ctrl+alt+5"], "command": "insert", "args": {"characters": "€"} },
{ "keys": ["ctrl+alt+7"], "command": "insert", "args": {"characters": "{"} },
{ "keys": ["ctrl+alt+8"], "command": "insert", "args": {"characters": "["} },
{ "keys": ["ctrl+alt+9"], "command": "insert", "args": {"characters": "]"} },
{ "keys": ["ctrl+alt+0"], "command": "insert", "args": {"characters": "}"} },
{ "keys": ["ctrl+alt++"], "command": "insert", "args": {"characters": "\\"} },
{ "keys": ["ctrl+alt+<"], "command": "insert", "args": {"characters": "|"} }

]

elitasson
źródło