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
клавиши перед вводом указанных символов, и изменения символов работали правильно.
И после перезагрузки все эти ключевые механизмы перевода остались в силе.