Ubuntuへ最初にEmacsをインストールしたとき、入力がUS配列として処理されてしまったときの対処法を備忘録として残しておきます。Ubuntu26.04 LTSで環境を再構築したときは起こらなかった事象なのであまり需要はないかもしれないです。
まず、
# dpkg-reconfigure keyboard-configuration
でキーボード周りの設定を見に行きます。
Qiita記事にもなっていたが、はてぶの方がわかりやすかった。
デフォルトのままで問題なさそうであれば次へ進みます。
# apt install x11-xkb-utils
インストールしていなければ上記を入れ、
$ setxkbmap -query
自分の環境では以下のように表示されました。
WARNING: Running setxkbmap against an Xwayland server
rules: evdev
model: pc105
layout: us
layoutがusになっているのが諸悪の根源だったりするみたいです。
# localectl set-x11-keymap jp pc105
$ setxkbmap -layout jp
このあたりを実行すればlayoutはJISになり¥もEmacs内で打てるようになりますが、毎回これをやるのはちょっと嫌なので設定ファイルに書き込んでおきます。
(shell-command "setxkbmap jp -model jp106")
もともとinit.elに記載されていた以下はエラーを起こすのでコメントアウトしました。
input backslash instead of Yen
(define-key global-map [?(J\(B] [?\\])
しかしこのままでは日本語入力ができないので、日本語フォントと変換ツールをインストールします。
# apt install fonts-noto-cjk
# apt install emacs-mozc
init.elに以下を追記してEmacsを再起動すれば、C-jで入力モードを変換して日本語入力できるようになります。
;; Mozcを標準の入力メソッドに設定
(require 'mozc)
(setq default-input-method "japanese-mozc")
;; 日本語切り替えを Ctrl + j に割り当て
(global-set-key (kbd "C-j") 'toggle-input-method)
(おまけ)
力業でどうにかしたときのコードをいざというときのために貼っておきます......笑
(define-key input-decode-map (kbd "@") (kbd "\""))
(define-key input-decode-map (kbd "[") (kbd "@"))
(define-key input-decode-map (kbd "]") (kbd "["))
(define-key input-decode-map (kbd "^") (kbd "&"))
(define-key input-decode-map (kbd "&") (kbd "'"))
(define-key input-decode-map (kbd "*") (kbd "("))
(define-key input-decode-map (kbd "(") (kbd ")"))
(define-key input-decode-map (kbd "_") (kbd "="))
(define-key input-decode-map (kbd "=") (kbd "^"))
(define-key input-decode-map (kbd "+") (kbd "~"))
(define-key input-decode-map (kbd "]") (kbd "\\"))
(define-key input-decode-map (kbd "{") (kbd "`"))
(define-key input-decode-map (kbd "}") (kbd "{"))
(define-key input-decode-map (kbd ":") (kbd "+"))
(define-key input-decode-map (kbd "'") (kbd ":"))
(define-key input-decode-map (kbd "\"") (kbd "*"))
(define-key input-decode-map (kbd "\\") (kbd "]"))
(define-key input-decode-map (kbd "|") (kbd "}"))