日本語変換モードキーの割当設定
「トグルキー操作なしで日本語入力を」
https://qiita.com/nanbuwks/items/d53911b0b8bfd8c6c548
は日本語キーボードでの設定でしたが、これを英語キーボードでもできるように考えてみます。
記事の設定では、「変換」「無変換」キーを IMEON/IMEOFF に割り当てています。
このキーボードには日本語キーボードのように、変換のためのキーは用意されていませんが、ALT キーが右と左にあるので、これを「変換」「無変換」に、そしてALTの機能は悪の CapsLock キーに割り当てるようにしてみます。
なお、Ubuntu で US キーボードの設定を行う記事
「Ubuntu20.04 で US キーボードに変更」
https://qiita.com/nanbuwks/items/bcd6c838487c906a70e1
も併せてご覧ください。
環境
巷の解説では、IBus ではなく fcitx を使って設定していることが多いようだ。しかしながらキッズPC環境への応用のために、日本語Limix版 Ubuntu20.04 になるべく近い環境にすることにした。
準備
まず、先の「トグルキー操作なしで日本語入力を」記事の通り設定を済ませておきます。
HenkanやMuhenkanキーはありませんが、そのまま設定します。
本来であれば、ここで右Altや左Altが設定できればいいのですが、これらは「modifier key」というものらしく、ここでは設定できません。これらの設定のために、以下を行っていきます。
キーコードの割当の変更
次に、
「キーバインドの変更 Xmodmapの基本的な設定方法」
https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7
を元に、以下のように設定しました。
キーコードの調査
xev を使って関係しそうなキーのキーコードを調べておきます。
Caps Lock | 66 |
左 Ctrl | 37 |
左 Shift | 50 |
左 Alt | 64 |
Windows | - |
Fn | - |
menu | 135 |
右 Ctrl | 105 |
右 Shift | - |
右 Alt | 108 |
ー とあるのはxev で取得できなかったものです。Fnはハードウェア処理でしょうから取れないのでしょう。Windowsキーはxevからフォーカスが外れて取得できませんでした。右Shiftは壊れているようです。
これを元に、以下のように設定するようにしてします。
Caps Lock キーを Alt キーとして設定
左 Alt キーを無変換キーとして設定
右 Altキーを変換キーとして設定
デフォルト設定を保存する
設定を変更する前に、現在の設定を保存し簡単に戻せるようにしておきます。
先の
「キーバインドの変更 Xmodmapの基本的な設定方法」
https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7
の通り以下のように作業します。
$ xmodmap -pke > ~/.Xmodmap_default
$ vim ~/.Xmodmap_default
として、冒頭に以下を追加します。
clear shift
clear lock
clear control
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5
また、末尾に以下を追加します。
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Alt_R Meta_L
add mod2 = Num_Lock
add mod4 = Super_L Super_R Super_L Hyper_L
add mod5 = ISO_Level3_Shift Mode_switch
このファイルを使って、設定を復元するには以下のようにします。
$ xmodmap ~/.Xmodmap_default
キー設定変更ファイルを作る
以下のようにして定義ファイルを作る。
$ vim ~/.Xmodmap
中身は以下の通り
clear lock
clear mod1
keycode 64 = Muhenkan
keycode 66 = Alt_L
keycode 108 = Henkan_Mode
add mod1 = Alt_L Meta_L
設定の変更を反映する
以下のようにすると、現在のセッションでの設定が有効になる。
$ xmodmap ~/.Xmodmap
先の記事
「キーバインドの変更 Xmodmapの基本的な設定方法」
https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7
では以下のように記述してますが、再起動時に元に戻ってしまいました。
これで設定したキーバインドが有効になっているはずです。PCを再起動しても設定が反映されます。
元に戻すには下記を実行します。
いろいろ調べて、
「Ubuntu20.04でマシン起動時、サスペンド復帰時にスクリプトを実行する」
https://zenn.dev/jnuank/articles/8a616e539109cb
のように、
/usr/local/etc/rc.d
に記述したりしましたがうまくいきませんでした。
結局以下のようにGUIで設定しました。
「設定」-「アプリケーション」-「自動起動するアプリケーション」-「"ソフトウェア"で開く」-「起動」-「自動起動するアプリケーションの設定」で「追加」
以下のように設定しました。 nanbuwks は自分の名前です。これが xmodmap ~/.Xmodmap だとうまく動きませんでした。
問題点
先の
「Ubuntu20.04でマシン起動時、サスペンド復帰時にスクリプトを実行する」
https://zenn.dev/jnuank/articles/8a616e539109cb
ではサスペンド復帰時に元に戻るそうですが、このPCはサスペンドがそもそもうまく動いていないのでチェックができていません。
また、Ctrl+Alt+F3 などでコンソールを使った後、Ctrl+Alt+F2で元に戻っても変更が元に戻ってしまいます。これについては今の所以下をタイプインすることで対処するようにしています。
$ xmodmap ~/.Xmodmap