Aqui é como costumava ser feito, com XKB. Versões mais recentes do Chrome OS agora usam o Ash .
Crie um diretório chamado ~/.xkb/keymap
, ~/.xkb/types
e ~/.xkb/symbols
. Crie um arquivo ~/.xkb/types/chromebook
contendo a seguinte definição:
xkb_types "chromebook" {
virtual_modifiers Alt;
type "ARROW" {
modifiers = Shift+Lock+Alt+Control;
map[Shift] = Level2;
map[Lock] = Level2;
map[Alt] = Level3;
map[Alt+Shift] = Level3;
map[Alt+Lock] = Level3;
map[Control+Alt] = Level4;
map[Control+Alt+Shift] = Level4;
map[Control+Alt+Lock] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Caps";
level_name[Level3] = "Alt";
level_name[Level4] = "ControlAlt";
};
}
Crie um arquivo ~/.xkb/symbols/chromebook
contendo a seguinte definição:
xkb_symbols "chromebook" {
key <UP> {
type="ARROW",
repeat=yes,
[ Up, Up, Prior, Home ],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<PGUP>, clearmods=Alt),
RedirectKey(key=<HOME>, clearmods=Control+Alt)
]
};
key <DOWN> {
type="ARROW",
repeat=yes,
[ Down, Down, Next, End ],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<PGDN>, clearmods=Alt),
RedirectKey(key=<END>, clearmods=Control+Alt)
]
};
};
Execute o comando setxkbmap -print >~/.xkb/keymap/chromebook
. Edite o arquivo resultante e adicione +chromebook
dentro das diretivas include
para xkb_types
e xkb_symbols
; o arquivo deve ficar assim:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete+chromebook" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+chromebook" };
xkb_geometry { include "pc(pc105)" };
};
Adicione o seguinte comando ao aplicativos de inicialização :
xkbcomp -I ~/.xkb -R ~/.xkb keymap/chromebook $DISPLAY
Nota: isto não foi testado, não estou muito familiarizado com o XKB e está mal documentado. Tentei seguir dicas do XKB de Vincent Lefèvre .