なぜこれが意図したとおりに機能しないのか、少し戸惑っています。私の目標は、Caps Lockキーを制御対象にマッピングすることです。私はdebianを使用しています。このために、私は次のコマンドを使用しています
/usr/bin/setxkbmap -layout "$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')" -option ctrl:nocaps
ターミナル経由で実行すると完全に正常に動作します。ただし、これは起動時またはログイン時に実行し、常に手動で実行する必要があります。このコマンドをXFCEの自動起動セッションアプリケーションに追加し、コマンドを~/.profile
に追加しようとしました。ただし、どちらのオプションも機能しないようです。それでも手動で実行する必要があります(正しくマッピングされた後)。私は何が間違っているのですか?
setxkbmap
コマンドを~/.profile
に追加した後、コマンドが実行されなかった理由は、このファイルがシェル(おそらくbash)によって読み取られるのは、loginシェルが開始されたときだけだからです。 X
では、ターミナルエミュレータはログインシェルを起動しません。 setxkbmap
を使用する場合はBash
を~/.bashrc
に追加しますが、debian
システムで利用できるより良い方法があります-/etc/default/keyboard
のXKBOPTIONS
セクションを変更します。例:
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
でテストしました。
より良い方法は、ホームディレクトリに.xsessionrcファイルを作成することだと思います。
cat .xsessionrc
setxkbmap -option ctrl:nocaps
このファイルは、セッションの開始ごとに読み取られます。
このようにすると、セッションのみが影響を受けます。
他のユーザーはそれを取得しません。
DebianとNetBSDでは問題ありません。