Edited at

[メモ] Ubuntu14.04でCaps Lockを無効にしてShift+Capsだけ有効にした

More than 3 years have passed since last update.

どうやらキーボードの設定変更はxkbというのを用いるそうなので、

Happy my life | xkbでキーバインドを変更する

こちらのサイトを参考にして、まずxkbの設定ファイルとかを作る。

こぴぺ


まずベースとなる設定ファイル(mykbdファイル)を作成する。

$ mkdir -p ~/.xkb/keymap ~/.xkb/symbols

$ setxkbmap -print > ~/.xkb/keymap/mykbd

で、そのサイトではその後自分で設定ファイルとか作ってるんですが、よくわかりませんでした!()

けど、設定について勉強しようとおもって /usr/share/X11/xkb をみてたら /usr/share/X11/xkb/compat/japan とかいうファイルがあるんですよね。

これに「日本語環境ではCaps Lockは使わなくてEisuになってるよ」「Shift+Caps LockでCapsLockしてるよ」てきなことが書いてあって設定もしてあります。

要はこいつを読み込んじゃえばいいっぽいので、さっき作ったmykbdファイルをいじります。

mykbdファイルの中身はシステムによって異なるっぽいので、私の例です。


mykbd

xkb_keymap {

xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+jp+us:2+inet(evdev)" };
xkb_geometry { include "pc(pc104)" };
};


このxkb_compatにjapanというファイルを追加で読み込ませます。+japanを追記します。


mykbd

xkb_keymap {

xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete+japan" };
xkb_symbols { include "pc+jp+us:2+inet(evdev)" };
xkb_geometry { include "pc(pc104)" };
};


これでTerminal開いて


xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null


ってやればCaps Lock効かなくなります。Fcitxの設定、英数でMozc終了にしてたんですがやっとちゃんと効くようになりましたありがたい

あとは起動時に効くように、.bashrc に上のとおなじコマンドを突っ込んでおくだけです。


追記

これだとシステム起動後にTerminal起動しないといけないですね。

というわけで

・/etc/X11/xkb 以下に同じ構造を作る

・/etc/profile.d 以下に実行ファイルを作る(起動時に読み込み)

します。

まずは /etc/X11/xkb に ~/.xkb の中身をコピーシます

次に /etc/profile.d 下に実行ファイルを作りました。


japanese_caps.sh

#!/bin/sh

xkbcomp -I/etc/X11/xkb /etc/X11/xkb/keymap/mykbd $DISPLAY 2> /dev/null

/etc/X11/xkb を使っても良いかわからなかったのですが特に問題ないのかな…?一応これで起動時からCaps Lockが無効にはなりました。


追々記

これでも何故か自動的にCaps Lockが有効になっていたりするようです。なんでや!(怒)

というわけで、GUI的に対処しました。ずるい気がするけど。

まずDashで session と検索して「自動起動するアプリケーション」を起動

右メニューの 追加 で新しい自動実行を追加。名前は好きなものにして、コマンドのところに

bash /etc/profile.d/japanese_caps.sh

と記述(上でつけたファイル名)

これでログイン時にとりあえずCapsは無効化されます

次にログイン中にも有効化されるので、一定時間ごとにスクリプトを実行しましょう。

sudo apt-get install cron gnome-schedule

Dashで"Scheduled tasks"もしくは"gnome-schedule"と検索してScheduled tasksを実行

新規→「A Task That Launches Recurrently」→また同じようにコマンドのところにbash /etc/profile.d/japanese_caps.shであとは自由に。

これでEvery Hourとかにしとけばいいのかな。

とりあえずこれで様子見ます。