0. 前説
Linux ノートPCを使い込んでいくと、だんだんキーボードに不満を感じるようになります。
また、膝にノートPCを載せて使うのもしんどかったりします。
そこで、サブのキーボードが欲しくなります。
Aliexpress を眺めていると、安価な Bluetooth 日本語キーボードを幾つか見つけましたので、ものは試しにと買ってみました。
よぉ〜っく見ると、これは日本語キーボード風に見せた英語キーボードでした。「0」キーの右隣が「-/=」なら日本語キーボード、「-/_」なら英語キーボードです。
全くの不良品を掴まされた訳ではありませんし、返品もかなり面倒です。
折角ですので、これを機に英語キーボードにも少しずつ慣れてみることとしました。
軽くてブラインドタッチもさほど支障がありませんし、何より安い。
気に入らなければ類似の英語キーボードを物色すれば良いことですし。
という訳で、
1. 目的
- ノートPC標準装備の日本語キーボード
と - Bluetooth 英語キーボード
を共存させつつ、日本語入力もできるように構成し、なお且つ、 Caps キーを Ctrl キーに変更する、といったことを実現しようと頑張ったところ、だいぶハマりましたのでここにメモを記しておきます。
2. 前提条件
なお、環境は Ubuntu 系限定です。また、 X.org 環境です。 Wayland ではありません。
RedHat 系はやるなとは言いませんが、日本語入力環境の構築からだいぶ苦労すると思いますのでお薦めしません。少なくとも私は嫌になって辞めました。
参考までに、実行環境:
Dell Vostro 3578
CPU: Core i3-8130U
Memory: 4GB
SSD: 128GB
OS: Ubuntu 24.04 LTS
3. 結論から申し上げますと
- 予め mozc と fcitx5 をインストールしておく
- fcitx5 設定で英語キーボードレイアウトを追加する
Ctrl+Space で、日本語キーボード / mozc / 英語キーボードを切り替えることができます。(ちょっとめんどいけど)
- $ setxkbmap -option ctrl:nocaps を実行
これでOKです。
そして逆に
4. やってはいけないことは
- $ xmodmap ~/.Xmodmap でCapsキーを変更する
です。
これでハマりました。
5. 聞いてくださいよ、どんな風にハマったか。
xmodmap を実行すると、
日本語キーボードの時は Caps キーが正常に Ctrl キーに変わってくれますが、
英語キーボードの時は何故か Caps キーが Shift キーになってしまいます。なのに Caps+Space でキーボードの切り替えができるという。なんなんだ一体。
スキャンコードか何かがおかしいのかと思い、 xev で確認してみても、日本語キーボードと英語キーボードでスキャンコードもキーコードも全く変わらず。
だいぶ悩みましたが、
https://wiki.archlinux.jp/index.php/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E5%85%A5%E5%8A%9B
https://wiki.archlinux.jp/index.php/Xorg/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A
http://www.est.hi-ho.ne.jp/suikodow/linux/xkboptions.htm
を参考に、ものは試しにと $ setxkbmap -option ctrl:nocaps を実行したところ、あっさり解決。
6. 因みに
(1) ログイン時に mozc が自動起動しない場合には
~/.config/autostart/ に、以下の内容を記述した fcitx5.desktop を作成します。
[Desktop Entry]
Type=Application
Exec=fcitx5
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=fcitx5
Name=fcitx5
Comment[en_US]=Start fcitx5
Comment=Start fcitx5
(2) Remmina で Caps キーを Ctrl キーに変換するには
[Remminaの設定] - [RDP] - [Keyboard scancode remapping] に "0x3a=0x1d" を記入。
です。 ~/.config/remmina/remmina.pref には
(snip)
rdp_use_client_keymap=0
rdp_disable_smooth_scrolling=0
rdp_reconnect_attempts=
rdp_kbd_remap=0x3a=0x1d
rdp_quality_0=6F
rdp_quality_1=7
rdp_quality_2=1
rdp_quality_9=80
rdp_deviceScaleFactor=0
rdp_desktopScaleFactor=0
rdp_desktopOrientation=0
(snip)
という値が記述されていました。
一見、関係ないように見えるかもしれませんが、 Caps キーを Ctrl キーに変換する際、 RDP クライアントが鬼門でした。これもだいぶハマりました。