Другой подход заключается в использовании xmodmap
. Добавьте следующее к вашему ~/.Xmodmap
:
keycode 134 = ISO_Level3_Shift Multi_key
Это с учетом регистра. Правая клавиша Alt ( AltGr ) на моей клавиатуре имеет код 134. Если это не работает, вероятное объяснение состоит в том, что ваша клавиатура использует другой номер для этой клавиши. Чтобы выяснить это, запустите xev
, нажмите любую клавишу, которую хотите использовать, и найдите часть с надписью "keycode XXX".
Конечно, вы можете использовать любой ключ для этой цели; например,
keycode 38 = a Multi_key
сделал бы ключ служить в качестве ключа (только создания письма) при сдвиге. Невозможность набрать заглавную букву А будет явным ущербом, поэтому, возможно, вы захотите заняться чем-то другим ☺
Я использую Shift+Shift с трюком:
keysym Shift_L = Shift_L Multi_key
keysym Shift_R = Shift_R Multi_key
Это заставляет левую клавишу Shift действовать как левую клавишу Shift, а правую клавишу Shift - как правую клавишу Shift, за исключением того, что если вы удерживаете клавишу Shift, каждая клавиша Shift действует как Compose. Несколько сценариев для иллюстрации:
Если вы нажмете левую клавишу «Shift», нажмете клавишу «Shift» вправо, отпустите клавишу «Shift» вправо и отпустите клавишу «Shift» - тогда вы получите тот же эффект, как если бы вы нажимали физическую клавишу Compose (на старых клавиатурах Sun такие были, IIRC). Так в частности:
- Shift Shift + : + ) производит смайлик, ☺ (по крайней мере, с моим
~/.XCompose
)
- Shift Shift + a + a производит & aring; персонаж "å".
Если нажать левую клавишу «Shift», нажать клавишу «Shift» вправо, а затем отпустить две клавиши Shift в обратном порядке, вы получите тот же эффект, что и выше.
Если вы нажмете левое смещение и отпустите его снова (без промежуточного правого смещения), вы получите два события клавиатуры:
- событие
KeyPress
для Shift_L
- событие
KeyRelease
для Multi_key
Это потому, что когда вы отпускаете левую клавишу Shift, клавиша Shift удерживается (левая клавиша -_-), поэтому клавиша обрабатывается так, как будто Multi_key
- это все, что она когда-либо делала. Это не вызвало у меня каких-либо заметных проблем, но, возможно, какое-то старое и ошибочное приложение могло подавиться несовпадением KeyPress
и KeyRelease
.
Также обратите внимание, что взаимодействие между клавишами одноразового использования, клавишами-модификаторами и клавишами переключения состояний (например, a, Shift и Caps Lock) взаимодействует забавно. Если вы хотите использовать одну и ту же клавишу в качестве клавиши Caps Lock и (когда удерживается Shift) клавишу Comose, вы можете получить эффектные эффекты. Кажется, я помню, что вы получаете все применимые эффекты, что, вероятно, не то, что вы хотите, но не стесняйтесь попробовать.