なぜこれが期待どおりに機能しないのか少し混乱しています。私の目標は、Caps Lockキーをコントロールにマッピングすることです。私はDebianを使用しています。これを行うには、次のコマンドを使用します。
/usr/bin/setxkbmap -layout "$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')" -option ctrl:nocaps
端末を介して実行すると完璧に動作します。しかし、私はこの作業を開始時またはログイン時に実行したいと思い、常に手動で実行したいと思います。このコマンドをXFCEの自動起動セッションアプリケーションに追加し、そのコマンドを発行します~/.profile
。それでも手動で行う必要があります(正しくマッピングした後)。私は何が間違っていましたか?
答え1
setxkbmap
コマンドが追加された後に実行されない理由~/.profile
は、シェル(おそらくbash)が次の場合にのみファイルを読み取るためです。ログインシェルが起動しました。X
ターミナルエミュレータでログインシェルを起動しないでください。を使用していますが、setxkbmap
システムでより良い方法が利用できる場合は追加してください。次のようにセクションを編集してください。~/.bashrc
Bash
debian
XKBOPTIONS
/etc/default/keyboard
root@debian:/home/ja# cat /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"
BACKSPACE="guess"
次に、以下の説明に従ってこのコマンドを実行しますman 7 keyboard
。
udevadm trigger --subsystem-match=input --action=change
再起動する必要もありませんlightdm
。次回の起動時に設定が自動的に適用されますlightdm
。/etc/default/keyboard
私はちょうど私の中にいましたDebian 9.4
。
答え2
私の考えのより良い方法は、ホームディレクトリに.xsessionrcファイルを作成することです。
cat .xsessionrc
setxkbmap -option ctrl:nocaps
このファイルは、各セッションの開始時に読み取られます。
これにより、ユーザーのセッションだけが影響を受けます。
他のユーザーは理解していません。
DebianとNetBSDでは問題はありません。