Quero digitar A com pontos ( Ä
/ ä
) como atalho de teclado de um nível no teclado do Macbook Air 2013-meados de Ubuntu 16.04, saída desetxkbmap -query
rules: evdev
model: pc105
layout: us,us
variant: dvorak,
options: ctrl:nocaps
Por padrão, não há AltGrno teclado, apenas dois Alts. Este comando torna seu alt direito a tecla de composição ( AltGr), mas mantém suas próprias configurações de teclado personalizadas, tendo o Capslock como CTRL por caps:ctrl_modifier
, veja aqui
gsettings set org.gnome.desktop.input-sources xkb-options \
"$(gsettings get org.gnome.desktop.input-sources xkb-options \
| sed "s/]/, 'compose:ralt']/")"
Seria realmente ótimo ter xmodmap
uma solução independente se isso for alterado, porque será depreciado.
Abordagem de combinação de teclas em dois níveis
Só podemos fazer uma abordagem de ligação de chave de dois níveis com o Dvorak International com chaves mortas.
- A resposta do SeverusTux é um comando de dois níveis como AltGr- Shift- Q+ A, que funciona apenas em
us-drovak, international with deadkeys
. - SeverusTux. Ctrl+ Shift+ u+ e4+ Enterfunciona e dá a você
ä
. Como você pode mapear isso para uma combinação de teclas de um nível Alt- a?
Eu faço onde você vê que a GUI faz a alteração em outro lugar. Eu realmente quero saber onde
masi@masi:~$ cat /usr/share/X11/locale/en_US.UTF-8/Compose > /home/masi/Desktop/test1
% I make here a change in the GUI as proposed by Severus: compose key = right Alt
masi@masi:~$ cat /usr/share/X11/locale/en_US.UTF-8/Compose > /home/masi/Desktop/test2
masi@masi:~$ diff /home/masi/Desktop/test1 /home/masi/Desktop/test2
[ no output ]
Isso mostra que o xserver não atualiza rapidamente. Você precisa mudar o teclado para outra coisa e voltar para a alteração.
Abordagem de vinculação de teclas em um nível
Eu quero um comando de nível como AltGr- Apor ä
e AltGr- Shift- Apara Ä
em Inglês (US-Dvorak). Eu faço xev -e keyboard
e pressionoAltGr
[ignore the beginning; press AltGr]
KeyPress event, serial 28, synthetic NO, window 0x4400001,
root 0xd6, subw 0x0, time 13661220, (186,522), root:(186,574),
state 0x0, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x4400001,
root 0xd6, subw 0x0, time 13661284, (186,522), root:(186,574),
state 0x8, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Você pode obter todas as opções possíveis, more /usr/share/X11/xkb/rules/xorg.lst | grep lv3
mas estamos interessados apenas emlv3:ralt_switch
lv3:switch Right Ctrl
lv3:menu_switch Menu
lv3:win_switch Any Win key
lv3:lwin_switch Left Win
lv3:rwin_switch Right Win
lv3:alt_switch Any Alt key
lv3:lalt_switch Left Alt
lv3:ralt_switch Right Alt
lv3:ralt_switch_multikey Right Alt, Shift+Right Alt key is Compose
lv3:ralt_alt Right Alt key never chooses 3rd level
lv3:enter_switch Enter on keypad
lv3:caps_switch Caps Lock
lv3:bksl_switch Backslash
lv3:lsgt_switch <Less/Greater>
lv3:caps_switch_latch Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
lv3:bksl_switch_latch Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
lv3:lsgt_switch_latch <Less/Greater> chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
Meus layouts de teclado testados, mas o inglês principal (dvorak dos EUA)
Solução final [Sneetsher]
Defino A com pontos em inglês (dvorak) por AltGr- a. Mesclar as alterações /usr/share/X11/xkb/symbols/us
; agora alemão-dvorak porque funciona muito bem também para os idiomas escandinavos ( daqui )
// based on a keyboard map from an 'xkb/symbols/dk' file
// Added A with dots and O with dots for AltGr-A and AltGr-O, respectively. Sneether and Masi, 17-June-2016.
partial alphanumeric_keys
xkb_symbols "dvorak" {
name[Group1]= "English (Dvorak)";
key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft, dead_grave] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ bracketleft, braceleft ] };
key <AE12> { [ bracketright, braceright, dead_tilde] };
key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
key <AD04> { [ p, P ] };
key <AD05> { [ y, Y ] };
key <AD06> { [ f, F ] };
key <AD07> { [ g, G ] };
key <AD08> { [ c, C ] };
key <AD09> { [ r, R ] };
key <AD10> { [ l, L ] };
key <AD11> { [ slash, question ] };
key <AD12> { [ equal, plus ] };
key <AC01> {[ a, A, adiaeresis, Adiaeresis ] };
key <AC02> {[ o, O, odiaeresis, Odiaeresis ] };
key <AC03> { [ e, E, ediaeresis, Ediaeresis ] };
key <AC04> { [ u, U, udiaeresis, Udiaeresis ] };
key <AC05> { [ i, I ] };
key <AC06> { [ d, D ] };
key <AC07> { [ h, H ] };
key <AC08> { [ t, T ] };
key <AC09> { [ n, N ] };
key <AC10> { [ s, S, ssharp ] };
key <AC11> { [ minus, underscore ] };
key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
key <AB02> { [ q, Q ] };
key <AB03> { [ j, J ] };
key <AB04> { [ k, K ] };
key <AB05> { [ x, X ] };
key <AB06> { [ b, B ] };
key <AB07> { [ m, M ] };
key <AB08> { [ w, W ] };
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
key <BKSL> { [ backslash, bar ] };
include "level3(ralt_switch)"
};
Ou use o script que ainda é de buggy
# restore your current keyboard settings
sudo apt-get install --reinstall xkb-data
gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt', 'caps:ctrl_modifier']"
sudo sed -i.bak 's/[[ \t]*a,[ \t]*A[ \t]*]/[ a, A, adiaeresis, Adiaeresis ]/g;' /usr/share/X11/xkb/symbols/us;
sudo sed -i.bak 's/[[ \t]*o,[ \t]*O[ \t]*]/[ o, O, odiaeresis, Odiaeresis ]/g;' /usr/share/X11/xkb/symbols/us;
# German-Dvorak feels better
#sudo sed -i.bak 's/[[ \t]*e,[ \t]*E[ \t]*]/[ e, E, ediaeresis, Ediaeresis ]/g;' /usr/share/X11/xkb/symbols/us;
#sudo sed -i.bak 's/[[ \t]*u,[ \t]*U[ \t]*]/[ u, U, udiaeresis, Udiaeresis ]/g;' /usr/share/X11/xkb/symbols/us;
#sudo sed -i.bak 's/[[ \t]*s,[ \t]*S[ \t]*]/[ s, S, ssharp ]/g;' /usr/share/X11/xkb/symbols/us;
# add include "level3(ralt_switch)" to the end of the environment
# https://unix.stackexchange.com/a/290407/16920
# https://unix.stackexchange.com/q/290405/16920
pos=( $( sed -n -f - /usr/share/X11/xkb/symbols/us <<END_SED
/xkb_symbols "dvorak" {/,/^};/{
/xkb_symbols "dvorak" {/=
/^};/=
}
END_SED
) )
sudo sed -i.bak "${pos[1]}i\ include \"level3(ralt_switch)\"" /usr/share/X11/xkb/symbols/us
sudo dpkg-reconfigure xkb-data
# Change your keyboard. Change Back. Should work. But some bug. I cannot get the script works stably.
Insetos
- Problema TODO ao recarregar o teclado novamente no xserver https://unix.stackexchange.com/q/290449/16920 A alteração manual nem sempre funciona.
- Complicações: O Xserver não carrega essas chaves rapidamente e nem em todos os casos após a reinicialização / logout.
Sistemas: Ubuntu 16.04
Kernel Linux: 4.4 - 4.6
Modelo de teclado: pc105
Layout do teclado para abordagem de combinação de teclas em dois níveis: US-dvorak international with deadkeys
Layout do teclado para abordagem em nível de combinação de teclas: Inglês (Dvorak) = US-dvorak , mas também inglês (Dvorak clássico)
ctrl+shift+u
e digitee4
e pressione Enter. Se isso funcionar, você pode tentar obter uma chave simples para isso.Respostas:
Para digitar ä, unicode é U00E4
Para digitar Ä, o unicode é U00C4
Se você quiser os unicodes de outros personagens, poderá obtê-los em
gucharmap
Para inseri-lo manualmente, pressione ctrl+ shift+ ue seguido de 00e4 e pressione Enter, isso deve digitar ä
Mas há uma maneira melhor de fazer isso usando Teclas de composição .
Se você deseja definir sua Right alt chave de composição usando a linha de comando: basta executar o seguinte:
Se você deseja configurá-lo processando a GUI:
Ative a tecla de composição acessando Configurações do sistema -> Teclado -> Digitando -> Alt direito . (você pode escolher uma chave diferente, se desejar)
Isso é tudo !!
Agora vá ao seu editor de texto favorito e faça o seguinte:
Pressione e libere Right Alt, "seguido de a. agora você deve ver ä .
O mesmo pode ser feito para Ä , Press and release, Right Altseguido por "seguido porA
NOTA: pode ser necessário pressionar Shift+ 'para obter"
GORJETA:
Se você deseja ver todos os atalhos semelhantes, visualize este arquivo: /usr/share/X11/locale/en_US.UTF-8/Compose
fonte
sed
, isso é uma informação extra, como disse @BharadwajRaju, você pode simplesmente visualizá-lo se quiser a tecla de atalho para outro símbolo especial. Isso é uma enorme lista de todos esses atalhosInglês (Dvorak, internacional com chaves mortas) -
dvorak-intl
funciona bem!Eu posso digitar
Ä
usando ShiftAltGrqcom a configuração padrão. Veja o arquivo em/usr/share/X11/xkb/symbols/us
que aq
chave declarada comoe com
level3(ralt_switch)
na parte inferior para usar Right Alt/ AltGrcomo mudança de terceiro nível, de modo queq
←qQ
←Shiftqä
←AltGrqÄ
←ShiftAltGrqVisualização
dvorak-intl
define apenas 4 níveis, eu desenho todos os 8 níveis que o XKB suporta para que você possa ter uma visão geral.<AB02>
chave são equivalentes.Configuração
ä
eÄ
no 3º e 4º nível dea
chave em inglês (Dvorak) -dvorak
layoutMais
ö
eÖ
nao
chave. (Ele não aparece na captura de tela, como foi adicionado após a captura de tela)O mesmo que
dvorak-intl
, podemos fazer a mesma configuração paradvorak
.Limpar modificações anteriores
Ponto de Verificação
Aprenda inglês (Dvorak, internacional com chaves mortas) -
dvorak-intl
AltGrqimprime
ä
. Se não funcionar, será o mesmo problema com esta configuração. Há algo que impede o Right Alt de funcionar como mudança de nível3.Verifique o mapa atual de
dvorak
Verifique o mapeamento Alt direito, deve ser
Alt_R
Modificar
a
mapaDefinir Alt direito como mudança de nível3
Existem muitas chaves que podem ser usadas como ISO_Level3_Shift. Verifique as opções disponíveis
Por exemplo, se você quiser usar o Caps Lock como a mudança de nível3, insira em
include "level3(caps_switch)"
vez deinclude "level3(ralt_switch)"
.Forçar o recarregamento de layouts
Mude para outro layout e depois volte.
Ponto de verificação
Verifique o mapa atual de
dvorak
Verifique o mapeamento Alt direito. Deveria ser
ISO_Level3_Shift
Agora, deve funcionar!
Comando de uma linha
fonte
sudo sed -i "${pos[1]}i\ include 'level3(ralt_switch)'" /usr/share/X11/xkb/symbols/us
torna o teclado inutilizável na inicialização. Você não pode digitar nenhuma tecla no teclado. Ele apenas adiciona o level3 no final do ambiente Dvorak na linha 249. A linha 249 está na posição correta?${pos[1]}
definiu antes.