`xmodmap`が起動時に機能しない

`xmodmap`が起動時に機能しない

私は最近Debian 9をインストールし、普段使っていた~/.Xmodmapファイルをリンクしてからそれを私xmodmap ~/.Xmodmap.xsession.

ちなみにDMなしi3で走っていますstartx

コマンドが正常に実行されたかどうかをテストするために私のコマンドを.xsessiontouch ~/prior && xmodmap ~/.Xmodmap && touch ~/postxmodmapsetxkbmap

解決策を検索しましたが、答えがない質問、私には役に立たない古い回答がある質問、実際の解決策が含まれていない質問のみを見つけました。

ベストアンサー1

この動作の理由は、以下で間接的に文書化されていますman keyboard

説明する

キーボードファイルはキーボードのプロパティを記述します。その読者はセットコーン(1)コンソールでキーボードを設定するには。 Debianシステムでは、デフォルトのキーボードレイアウトは/etc/default/keyboardで説明されています。Xとコンソール間で共有されます。

/etc/default/keyboardシステムがインストールされ、実際の問題が発生したときの内容が生成されました(ctrl:nocaps後でオプションを追加しました)。

XKBMODEL="pc105"
XKBLAYOUT="se"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"

上記は、Xが起動中の特定の時点(おそらくその後など)にxkbオプションを設定し、その間に設定されたすべての設定が失われることを示しています.xsessionxmodmap.xsession

これは理由が出て解決策は次のとおりですman setupcon

キーボード構成は ~/.keyboard または /etc/default/keyboard で指定されます。これフォント構成 ~/.console-setup に指定するか、/etc/default/コンソール設定

収量の確認man console-setup:

console-setupファイルは、setupcon(1)がコンソールを設定するために使用するエンコーディングとフォントを指定します。 キーボードレイアウトの指定にも使用できます。これはお勧めできません。代わりにキーボード(5)を使用してください。

したがって、/etc/default/keyboardTTYと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の両方に正しいキーマップとオプションがあります。

おすすめ記事