2021年6月20日日曜日

Ubuntuで Capslockを全角半角キーとして使う

試した環境 Ubuntu20.04

キーボード配置 英語

fcitx, mozc

やりたいこと

  • 「CapsLock」を「全角半角」に(本来英語キーボードにはない)
  • 英数のときは小文字であること
  • 日本語のときも小文字であること(F10押すと小文字になること)
  • CapsLockは使えない状態にする

X11のファイルを設定する

 /usr/share/X11/xkb/symbols/capslock を見ると、どういう書き方になるかを確認できます。

/usr/share/X11/xkb/rules/evdev の中にコマンド群があって、caps: ...  という項目が並んでいるので

caps:mycaps   =   +mysetting(mycaps)

を適当な場所に追加します。(caps:mycaps という設定をmysettingファイルのmycaps   から読む、という意味)

次に、設定ファイルを作ります。/usr/share/X11/xkb/symbols/mysetting に以下を書き込んで保存します。(mycapsを呼び出すと、CAPSをZenkaku_Hankakuにする、という意味)

hidden partial modifier_keys

xkb_symbols "mycaps" {

    key <CAPS> { [ Zenkaku_Hankaku ] };

};

ここまで設定して、

$ setxkbmap -option caps:mycaps

とすると、CapsLockがZenkaku_Hankakuに変更できます。

設定ショートカットを作る

頻繁に設定がリセットされてしまうので、ショートカットを設定します。リセット自体は防げないようです。

mozc_reset.sh という名前(任意)でファイルを作ります。

このシェルスクリプトでは、fcitxを上書きしてからsetxkbmapを実行しています。

#!/bin/bash

# if Caps Lock is on, turn off
check=$(xset q | grep -q 'Caps Lock:   off'; echo $?)
if [ $check -eq 1 ] ; then
xdotool key Caps_Lock
fi

# reset fcitx-mozc
fcitx -r 1>/dev/null 2>&1
sleep 1s

setxkbmap -option caps:mycaps

パーミッションを変えておきます。

$ chmod 755 mozc_reset.sh

実行確認します。

$ bash mozc_reset.sh

ショートカットとして追加

Setting->Keyboard Shortcuts  + を押して追加ウィンドウ

Name: (任意)

command: bash mozc_reset.sh

Shortcut:  (任意) 

とりあえず使えています。たまに2回ショートカットを動作させないと正しく動かないときがありますが・・・。

参考

https://askubuntu.com/questions/968806/remap-caps-lock-to-ctrl-b

0 件のコメント:

コメントを投稿