Как я могу заставить Ctrl + Alt действовать как Alt gr в Ubuntu?

11

Я недавно переключился на Ubuntu на своем ноутбуке, и одна вещь, которая почти заставила меня переключиться обратно на Windows, это то, что я не могу заставить Ctrl+ Altвести себя как Alt gr.

Я программировал в течение нескольких лет и, например, я привык делать знак "$" нажатием ctrl+ alt+ 4. Здесь, в Ubuntu, я должен использовать "Alt gr + 4", ведьма почти сводит меня с ума ...

Это можно как-то исправить?

elitasson
источник
1
Вы пытались играть с сопоставлениями композитного ключа? help.ubuntu.com/community/ComposeKey
Тим Кеннеди
Вы можете использовать xmodmapкоманду, чтобы сделать это. Проверьте это askubuntu.com/questions/5095/typing-using-key-combination
Bichoy
Попробуйте xmodmap, который доступен в пакете x11-xserver-utils в Ubuntu. Это позволяет переназначить любую комбинацию клавиш.
Уоррен
@elitasson Если вы найдете ответ на свой вопрос, задайте его как отдельный ответ.
Бернхард
@Bernhard Нет, вы не можете сделать это с помощью xmodmap. Он не поддерживает создание комбинации Ctrl + Alt в качестве отдельного модификатора. Но я думаю, что вы можете с xkb .
Жиль "ТАК - перестань быть злым"

Ответы:

3

Вы можете добавить глобальные ярлыки для написания специальных символов. Я часто использую это для моей немецкой раскладки клавиатуры с Ubuntu (на Windows это работает из коробки).

Я добавил следующие ярлыки:

Shift+ Enter+ 7написать письмо{

Shift+ Enter+ 0написать письмо}

Shift+ Enter+ 8написать письмо[

Shift+ Enter+ 9написать письмо]

Для добавления этих ярлыков вам понадобится xbindkeysи xvkbd:

sudo apt-get install xbindkeys xvkbd

Затем отредактируйте файл конфигурации:

vim ~/.xbindkeysrc

И добавьте следующие строки (отредактируйте их по своему усмотрению):

"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

Затем перезагрузите xbindkeys:

xbindkeys -f ~/.xbindkeysrc

Спасибо за то, что поделились этим ( http://forum.ubuntuusers.de/topic/strg-%2B-alt-alt-gr-wie-in-windows/ ).

cheneym
источник
1
Не могли бы вы объяснить, что делает строка m: 0xc + c: XX?
elitasson
1
Я знаю, что это старый вопрос и ответ, но только для тех, кто хочет добавить больше символов, таких как | или @ или €: коды клавиш, используемые на c:XX, насколько я знаю, не универсальны, так что вам не повезет погуглить. Однако вы можете узнать код ключа локально, установив и выполнив «xev» в командной строке. Он напечатает все ваши действия клавиатуры и мыши, поэтому вам придется немного прокрутить, чтобы найти «вашего» персонажа.
Нано Миратус
1
Например, нажатие <(для настройки |) во время работы xev выводит следующее: 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: Falseномер, который вам нужен, всегда находится в третьей строке после «кода ключа». Так что в этом случае, 94.
Нано Миратус
2

После попыток заставить его работать с комбинацией xbindkeys и xvkbd / xte (я никогда не мог заставить некоторые символы {, [,],}, \ и т. Д. Работать должным образом, возможно, потому что я использую скандинавскую раскладку клавиатуры), Я наконец нашел простое и практичное решение: Autokey. Вот точные инструкции, чтобы заставить это работать:

  1. Установите Autokey через Ubuntu Software (я использовал GTK-версию, а не KDE) или: «sudo apt-get install autokey-gtk».
  2. Сконфигурируйте один сценарий для каждой клавиши, например, для {используйте этот код: keyboard.send_keys("<alt_gr>+7")и установите горячую клавишу на Ctrl + Alt + 7 (сначала установите горячую клавишу на 7, затем добавьте Ctrl и Alt в качестве модификаторов). По крайней мере, это работало для наиболее важных ключей для написания кода: {[]}.
  3. Добавьте autokey в Startup Applications (найдите «start», чтобы найти его), а затем добавьте программу с «autokey» в качестве команды.

Это решение будет работать для всего, что выполняется в текущем X-сеансе (я думаю), но не будет работать, если вы начнете новый сеанс терминала, используя Ctrl + Alt + (F2-F6).

Джим Бьёрклунд
источник
1

Хотя это по-прежнему не отвечает на ваш вопрос, я считаю, что это более простое решение, чем другие ответы.

Чтобы сделать R-ALTработу похожей AltGr, вы можете добавить следующую строку в ваш ~/.xinitrc:

setxkbmap -option lv3:ralt_switch

AltGrМожно найти другие способы перехода на 3-й уровень (тот, который обычно достигается с помощью ключа), и можно определить новые способы /usr/share/X11/xkb/symbols/level3.

oleks
источник
1

Вот что я сделал, чтобы L-Altключ действовал точно так же, как Altgrключ. Я не пробовал с CtrlAltключом

Он состоит в изменении файла level3

В терминале измените каталог:

cd /usr/share/X11/xkb/symbols

сделайте копию файла level3:

sudo cp level3 level3.old

отредактируйте level3 с помощью любого текстового редактора:

sudo gedit level3 

Вы должны найти такой блок:

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

Добавьте копию блока с помощью LALT (левый alt) вместо RALT (altgr):

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

Теперь должно быть 3 других блока, начиная с key <RALT>

Сделайте то же самое с ними.

Сохранить и выйти.

Квентин Доннер
источник
0

Я использую только специальные знаки, когда пишу код, поэтому мне удалось исправить это Sublime Text.

В настройках -> Привязки клавиш - Пользователь

вставить следующее:

[
{ "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
источник