RDPでリモート接続したUbuntuのマシンにJIS配列のHHKBを認識させる
追記1
sudo dpkg-reconfigure keyboard-configuration
でHappy Hacking
を選択するように書いたけど、Happy Hackingの配列(というかUS配列)にはJIS配列における_
と\
に対応するキーが存在しないので、Happy Hackingの代わりにMacの配列を選択するほうが良い気がしている(まだ試していない)。
モチベ
開発環境でWin -> Ubuntu20.04にrdpして作業する際にスペースキーの両サイドのかな/英数キーが反応していなかった。ので反応するようにしたかった。
キーワード
検索時に役立ったキーワード
hangul
hangul_Hanja
HHKB, jis, rdp, あたりだと良い結果が出ない。jis配列の時点で日本語圏に絞られるし、hhkbのハック記事を出すような人はjis配列を使っていない。hhkbのかな/英数にマップされているのがなぜかハングル(かつ反応しない)のでこれが決め手になった。
設定
- 端末に直接キーボードを挿して、
sudo dpkg-reconfigure keyboard-configuration
を実行する- keyboard-configurationの設定画面が出る(※リモート接続だと出ない)
- Happy Hackingを選択
- 全部デフォルトの設定を選択
- 再起動してGUIの右上から
キーボードマップ
を確認、HHKBになっていれば良い- ※キーボードマップを設定しないと、xev使用時のキーマップがNosymbolになり後ろのフローに進めない(と思う)
setxkbmap -query
でキーボード設定のrule, model, layoutなど出てきたものを全部メモする- 端末からログアウトし、リモートデスクトップでログインする
- ※直接端末側で設定しても、リモートデスクトップ時にたいてい壊れる。直接端末を触ることは自分はあまりないので使い分けをせずリモートデスクトップ用の設定のみをすることにした
setxkbmap -query
をリモートデスクトップ上で確認する- 直接端末を操作しているときと異なる場合は、異なる項目を確認し
setxkbmap -rules evdev
など、リモート接続時のパラメータを直接接続時のパラメータに合わせるように設定する - 自分の環境では
rules -> evdev
,model -> hhk
に修正している
- 直接端末を操作しているときと異なる場合は、異なる項目を確認し
- かな/英数キーに何が割り振られているか確認する
xev
コマンドでキー番号とキーマップを調べる- 手元のhhkbはキー番号が
121/122
、キーマップはHangul
/Hangul_Hanja
に割り当てられていた- ※直接接続時は130/131になっていたので、キーボードの種別は同じでもキー番号が接続法により異なることということはなんとなくわかった
.Xmodmap
ファイルをホームディレクトリに作成し、キー番号と キーマップの対応を書くkeycode 122 = Hiragana NoSymbol Hiragana
とkeycode 121 = Eisu_toggle NoSymbol Eisu_toggle
を追記した
- (ほかにも矢印キーが無変換などにマップされていたので修正している)
xmodmap ~/.Xmodmap
で設定を読み込む
xev
でキーマップを確認する- 英数/かなキーのキーマップが
Eisu_toggle
/Hiragana
になっていれば良い
- 英数/かなキーのキーマップが
- iBus-mozcの設定で
Hiragana
はIMEOn
,Eisu
はIMEOff
にする- https://qiita.com/rattcv/items/a8a07ec292ec898a1e9e#mozc%E3%81%AE%E8%A8%AD%E5%AE%9A
- これをと同じことをした
- (多分、fcitxでも同じことができると思う)
- 最後にGUI端末起動時に
setxkbmap
の設定とXmodmap
の設定を読み込むように.bashrc
に数行追記する
# ~/.Xmodmapに追記したもの keycode 122 = Hiragana NoSymbol Hiragana keycode 121 = Eisu_toggle NoSymbol Eisu_toggle # 矢印キーも狂っていたので直した keycode 98 = Up NoSymbol Up keycode 100 = Left NoSymbol Left keycode 102 = Right NoSymbol Right keycode 104 = Down NoSymbol Down
# .bashrcに追記したもの if [ $XDG_SESSION_TYPE != tty ]; then setxkbmap -rules evdev setxkbmap -model hhk xmodmap ~/.Xmodmap fi
下調べ
特に役立ったもの
https://zenn.dev/tmtms/articles/202109-remap-key
- 結局ここまでは触らなかったものの、これを読んでから作業を始めた方が頭が整理されてよかった
- https://hal.freedesktop.org/quirk/quirk-keymap-list.txt に
Eisu
がないので無理筋だと思い撤退した - 自作キーボードの人、これ系統のことをそつなくこなすんですかね...?
https://tamapoco.com/archives/6260
- ただし、一番最後のログでkeymapfileは読み込まれているように見えるが、warnにusing local keymapと出ているので失敗している気がする。
- ログの読み方についてはとても助かた
- ただし、一番最後のログでkeymapfileは読み込まれているように見えるが、warnにusing local keymapと出ているので失敗している気がする。
-
- RDPの接続時にキーマップが決定するという情報をもとにwinクライアントのレジストリをいじりに行く人が結構いた気がするが、あまりやりたくないし、やらずに済んだ
https://bamka.info/hhkb-kana-kirikae/
- jis配列使って,「使わないキーは外してしまうとgood!」ってキーが引っこ抜かれていて笑った
- us配列キーボードを買って、jis配列にマッピングするくらいできそうな雰囲気があるので余計に笑った