私は最近Debian 9をインストールし、普段使っていた~/.Xmodmap
ファイルをリンクしてからそれを私xmodmap ~/.Xmodmap
の.xsession
.
ちなみにDMなしi3
で走っていますstartx
。
コマンドが正常に実行されたかどうかをテストするために私のコマンドを.xsession
。touch ~/prior && xmodmap ~/.Xmodmap && touch ~/post
xmodmap
setxkbmap
解決策を検索しましたが、答えがない質問、私には役に立たない古い回答がある質問、実際の解決策が含まれていない質問のみを見つけました。
答え1
この動作の理由は、以下で間接的に文書化されていますman keyboard
。
説明する
キーボードファイルはキーボードのプロパティを記述します。その読者はセットコーン(1)コンソールでキーボードを設定するには。 Debianシステムでは、デフォルトのキーボードレイアウトは/etc/default/keyboardで説明されています。Xとコンソール間で共有されます。
/etc/default/keyboard
システムがインストールされ、実際の問題が発生したときの内容が生成されました(ctrl:nocaps
後でオプションを追加しました)。
XKBMODEL="pc105"
XKBLAYOUT="se"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"
上記は、Xが起動中の特定の時点(おそらくその後など)にxkbオプションを設定し、その間に設定されたすべての設定が失われることを示しています.xsession
。xmodmap
.xsession
これは理由が出て解決策は次のとおりですman setupcon
。
キーボード構成は ~/.keyboard または /etc/default/keyboard で指定されます。これフォント構成 ~/.console-setup に指定するか、/etc/default/コンソール設定。
収量の確認man console-setup
:
console-setupファイルは、setupcon(1)がコンソールを設定するために使用するエンコーディングとフォントを指定します。 キーボードレイアウトの指定にも使用できます。これはお勧めできません。代わりにキーボード(5)を使用してください。
したがって、/etc/default/keyboard
TTYとXを設定するためのキーボード設定です。 Whileは、/etc/default/console-setup
コンソールのキーボード(実際にはお勧めできませんが動作します)とフォントを設定するために使用できます。
だから私はこれをすべて行うために以下を/etc/default/keyboard
追加しました。/etc/default/console-setup
.xsession
#!/bin/bash
# The below assumes bash features, rewrite if you use other shells.
source /etc/default/console-setup
XKBPARMS=""
if [[ "$XKBLAYOUT" ]]; then
XKBPARMS="-layout $XKBLAYOUT"
fi
if [[ "$XKBMODEL" ]]; then
XKBPARMS+=" -model $XKBMODEL"
fi
if [[ "$XKBVARIANT" ]]; then
XKBPARMS+=" -variant $XKBVARIANT"
fi
if [[ "$XKBOPTIONS" ]]; then
XKBPARMS+=" -option $XKBOPTIONS"
fi
if [[ "$XKBPARMS" ]]; then
setxkbmap $XKBPARMS
fi
xmodmap ~/.Xmodmap
これでうまくいきますxmodmap
。 TTYとXの両方に正しいキーマップとオプションがあります。
答え2
また、-type ソリューションにも問題があったxmodmap
ため、調査した後、ただ使用することにしましたxkb
。私も見つけました。xmodmap
Archwikiは「最も簡単な」作業をお勧めしません。:
通常、最も簡単な操作を除いて、xmodmapを使用しないことをお勧めします。 xmodmapと同等のXKB互換はxkbcompです。しかし、xkbcompには-eオプションがないため、状況はそれほど単純ではありません。それにもかかわらず、可能な限りxkbcompを好む必要があります。
次の解決策が私にとって効果的でした(Ubuntu 16.04で)。
- TTYから:Linuxでコンソールキーマップを変更する方法。
- 中間
X
:関連ファイルを/usr/share/X11/xkb/symbols/
。us
(Number Rowと他のいくつかの点)と(Caps Lock)をpc
変更しました。
残念ながら、これはTTYとTTYの2つの別々のソリューションを追跡することを意味しますX
が、これまでは良いと思います。
しかし、xmodmap
すでに効果的な解決策があればそれはすべてです!