Faça uma chave ordinária agir como modificador com xcape e xkb

2

Para fazer com que a barra de espaços atue como Ctrl sob circunstâncias apropriadas, a página do GitHub de xcape atualmente instrui como segue:

# Map an unused modifier's keysym to the spacebar's keycode and make it a
# control modifier. It needs to be an existing key so that emacs won't
# spazz out when you press it. Hyper_L is a good candidate.
spare_modifier="Hyper_L"
xmodmap -e "keycode 65 = $spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier" # hyper_l is mod4 by default
xmodmap -e "add Control = $spare_modifier"

# Map space to an unused keycode (to keep it around for xcape to
# use).
xmodmap -e "keycode any = space"

# Finally use xcape to cause the space bar to generate a space when tapped.
xcape -e "$spare_modifier=space"

Como conseguir isso com xkb em vez de xmodmap ?

    
por Akater 29.11.2016 / 21:57

1 resposta

0

Com Hyper_R no lugar de Hyper_L , é assim:

conteúdo de ~/.config/xkb/keycodes/my-keycodes :

xkb_keycodes "xcape-special" {
    <HYPR> =  65;
    <SPCE> = 207;
};

Nota: 207 é o código-chave padrão para a tecla (virtual) Hyper_R na tabela de códigos de tecla carregada na minha máquina.

conteúdo de ~/.config/xkb/symbols/my-symbols :

xkb_symbols "xcape-special" {
    key <HYPR>  { [ Hyper_R ] };
    modifier_map Control { <HYPR> };
};

trecho de ~/.xinitrc :

XKB_DIR="$HOME/.config/xkb"
XKB_SYMBOL_FILE="my-symbols"
XKB_KEYCODE_FILE="my-keycodes"

setxkbmap -layout "us+$XKB_SYMBOL_FILE(xcape-special)" \
    -keycodes "evdev+$XKB_KEYCODE_FILE(xcape-special)" \
    -option "" -print \
    | xkbcomp -I"$XKB_DIR" - "${DISPLAY%%.*}" >/dev/null 2>&1

xcape -e "Hyper_R=space"

Esta não é a única maneira de configurar xkb . A configuração provavelmente poderia ser carregada de um único arquivo com uma única chamada xkbcomp . Subdirs de ~/.config/xkb/ simplesmente seguem a estrutura de /usr/share/X11/xkb/ . A parte ... -print | xkbcomp ... é um pouco complicada, mas flexível. No momento, não consigo testar uma configuração mais simples.

    
por 30.11.2016 / 10:39

Tags