適切な場合、Spacebarこれを行うために、Ctrl現在のGitHubページにはxcape
次のものがあります。
# 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"
xkb
代わりにこれを達成する方法は何ですかxmodmap
?
ベストアンサー1
代わりに次Hyper_R
のHyper_L
ようになります。
コンテンツ~/.config/xkb/keycodes/my-keycodes
:
xkb_keycodes "xcape-special" {
<HYPR> = 65;
<SPCE> = 207;
};
注:マイコンピュータにロードされたキーコードテーブルの207
(仮想)キーのデフォルトのキーコードです。Hyper_R
コンテンツ~/.config/xkb/symbols/my-symbols
:
xkb_symbols "xcape-special" {
key <HYPR> { [ Hyper_R ] };
modifier_map Control { <HYPR> };
};
抜粋~/.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"
これが唯一の設定方法ではありませんxkb
。単一の呼び出しで単一のファイルから構成をロードできますxkbcomp
。サブディレクトリは~/.config/xkb/
の構造のみに従います/usr/share/X11/xkb/
。この... -print | xkbcomp ...
部分は少し複雑ですが柔軟です。今は簡単な設定を試すことはできません。