setxkbmap и ~/.XCompose – невозможно установить действительный мертвый ключ...?

я бегуDebian 20.0.4подXFCE4. Я хочу настроить левую клавишу «Win» ( т. е . ) на своей клавиатуре как мертвую клавишу, которую можно использовать для вывода гласных с острыми ударениями и которую можно использовать для вывода буквы «n» с тильдой. Например:

      LWIN + a => á
LWIN + n => ñ
... etc. ...

Основываясь на поиске в Интернете и нескольких разговорах с другими людьми, я в итоге попробовал комбинацию и настроек следующим образом:

      /usr/bin/setxkbmap -option compose:lwin

И в ...

      include "%L"

<Multi_key> <a> : "á"
<Multi_key> <A> : "Á"
<Multi_key> <e> : "é"
<Multi_key> <E> : "É"
<Multi_key> <i> : "í"
<Multi_key> <I> : "Í"
<Multi_key> <o> : "ó"
<Multi_key> <O> : "Ó"
<Multi_key> <u> : "ú"
<Multi_key> <U> : "Ú"
<Multi_key> <n> : "ñ"
<Multi_key> <N> : "Ñ"

Однако, похоже, все, что происходит, это то, что мне приходится выполнять следующие комбинации из трех клавиш, чтобы получить желаемые результаты (например)...

      LWIN + ' + a => á
LWIN + ~ + n => ñ
... etc. ...

Похоже, что либо~/.XComposeнастройки игнорируются и толькоxsetxkbmapпочитается, или, возможно, есть что-то просто неправильное в том, что я делаю... ???

Я не хочу вводить какую-либо последовательность из трех клавиш, чтобы получить эти специальные символы (а на самом деле это 4 нажатия клавиш для тильды над буквой «n», потому что мне также нужно нажатьShiftклавиша для ввода тильды).

Я ищу метод с двумя нажатиями клавиш для ввода каждого из этих специальных символов.

А еще я не хочу ставить апостроф(') как мертвую клавишу, потому что тогда мне нужно будет указать комбинацию двух клавиш, чтобы ввести обычный апостроф, а я не хочу этого делать. Вот почему я хотел бы, чтобы клавиша, которую я обычно не использую (например, ), была неработающей клавишей, которую я мог бы использовать для комбинаций из двух клавиш.

Есть ли способ сделать это?

Заранее благодарю за любые мысли и предложения.

ОБНОВЛЕНИЕ : я попробовал это с/usr/bin/xmodmap -e "keysym Super_L = Multi_key"вместоsetxkbmapкоманду, и она работает не лучше.

И я также пробовал то же самое с ключом вместоLWIN, и этиCapsLockверсии тоже не работают.

ДАЛЬНЕЙШЕЕ ОБНОВЛЕНИЕ : Для тех, кто не знает, что я подразумеваю под «мертвым ключом», следующее объясняет, что означает этот термин: https://en.wikipedia.org/wiki/Dead_key .

1 ответ

Я понял! Прежде всего, необходимо прочитать и понять всю следующую статью для суперпользователя:Установка модификаторов Hyper и Super для определенных клавиш с помощью setxkbmap или xmodmap.

Я хочу иметь возможность вводить испанские символы, поэтому я хочу иметь возможность ставить острые ударения на «a», «e», «i», «o» и «u», ставить тильду на «n». ", чтобы позволить "u" иметь умлаут (для таких слов, какvergüenza), а также иметь возможность использовать перевернутый знак "!" и "?".

И в дополнение кLeft-Win, я решил тоже поставитьRight-Win,CapsLockиMenuвсе ключи должны служить ключами ( т. е . все четыре из них должны работать как ключи).Shiftключ илиCtrlключ; они удерживаются при вводе другого символа, который затем изменяется).

Вот как мне это удалось...

Оказывается, мне это не нужноsetxkbmapни~/.XComposeсовсем.

На моемXFCE4системе файл автоматически читается и обрабатывается, когдаXзапускается, поэтому все в этой статье, которая относится к~/.xmodmapвместо этого нужно было сделать это в моей системе.

Следуя логике этой статьи, я создал значение по умолчанию через/usr/bin/xmodmap -pke >~/.Xmodmapс последующим созданием резервной копии этого файла на~/.Xmodmap.backup.

тогда я использовал/usr/bin/xevчтобы получить коды клавиш для всех символов, которые я хочу обработать, и я изменил следующие определения клавиш в...

      keycode  66 = Mode_switch
keycode 133 = Mode_switch
keycode 134 = Mode_switch
keycode 135 = Mode_switch

keycode  38 = a A aacute Aacute aacute Aacute aacute Aacute aacute Aacute
keycode  26 = e E eacute Eacute eacute Eacute eacute Eacute eacute Eacute
keycode  31 = i I iacute Iacute iacute Iacute iacute Iacute iacute Iacute
keycode  32 = o O oacute Oacute oacute Oacute oacute Oacute oacute Oacute
keycode  30 = u U uacute Uacute uacute Uacute uacute Uacute uacute Uacute
keycode  47 = semicolon colon udiaeresis Udiaeresis udiaeresis Udiaeresis udiaeresis Udiaeresis udiaeresis Udiaeresis
keycode  57 = n N ntilde Ntilde ntilde Ntilde ntilde Ntilde ntilde Ntilde
keycode  10 = 1 exclam exclamdown exclamdown exclamdown exclamdown exclamdown exclamdown exclamdown exclamdown
keycode  61 = slash question questiondown questiondown questiondown questiondown questiondown questiondown questiondown questiondown

(Обратите внимание, что я решил использовать +;дляu-umlaut, как в нижнем, так и в верхнем регистре).

Все остальные ключевые определения я сохранил в~/.Xmodmapсо значениями по умолчанию.

Затем, после запуска/usr/bin/xmodmap ~/.Xmodmap, я мог бы удерживать любое из вышеперечисленныхMode_switchклавиши перед вводом указанных символов, и изменения символов работали правильно.

И после перезагрузки все эти ключевые механизмы перевода остались в силе.

Другие вопросы по тегам