LoginSignup
3
1

More than 5 years have passed since last update.

JIS配列キーボードのMacBookにインストールされたUbuntuをUS配列に変更する

Last updated at Posted at 2016-12-10

問題点

MacBookにインストールされたUbuntu(Linux Mint)において、JIS配列のキーボードをUS配列として使用したいが、デフォルトで用意されているレイアウトではUSキーボードにある`キーがない為、`を入力できない。

解決策

Jansiと同様に¥キーを押した際に`が入力されるように変更する。

xkbcomp

今回はxkbcompというコマンドを使って設定ファイルを読みこませる。この設定ファイルの場所はどこでもいいのだが、$HOME/.xkb/keymapに置くことにする。その設定ファイルの形式は以下のようになっている。

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us(mac)+us"
        replace key <AE13> { [ grave,   asciitilde ] };
    };
    xkb_geometry  { include "macintosh(applealu_jis)"   };
};

xkbcompコマンドを使用する際、物理キーボードのマッピング等の設定ファイルが格納されたフォルダを指定する。Ubuntu/Linux Mintの場合/usr/share/X11/xkbにある。その配下にはcompat, symbols, geometryなどのフォルダがあり、上記設定ファイルのxkb_compat, xkb_symbols, xkb_geometryはその対応するフォルダを読み込む。

例えば、上記のxkb_geometryの場合はxkb/geometry/macintoshのファイル内にあるxkb_geometry appleau_jisの設定をインクルードしている。

geometory

xkb/geometoryの配下には物理キーボードとシンボルのマッピングを定義する設定ファイルが入っている。

xkb/geometory/macintoshは以下のようになっている。このrow>keysの設定はキーボードの1行と対応しており、この例の場合それぞれTab,q,w,e,r...のキーがAE01,AE02,AE03,AE04のシンボルに対応している。このシンボルを使って次のキーのマッピングを変更する。

xkb_geometry "applealu_jis" {
  ...
  row {
      top=  0;
      left= 0;
      keys {
          { <AE01>, "KEY1",   0 },
          { <AE02>, "NORM",   3.5 }, { <AE03>, "NORM",   3.5 },
          { <AE04>, "NORM",   3.5 }, { <AE05>, "NORM",   3.5 },
          { <AE06>, "NORM",   3.5 }, { <AE07>, "NORM",   3.5 },
          { <AE08>, "NORM",   3.5 }, { <AE09>, "NORM",   3.5 },
          { <AE10>, "NORM",   3.5 }, { <AE11>, "NORM",   3.5 },
          { <AE12>, "NORM",   3.5 }, { <AE13>, "NORM",   3.5 },
          { <BKSP>, "BKSP",   3.5 }
      };
  };
}

キーボードの設定ファイル(keymap)にはxkb_geometry { include "[ファイルパス]([xkb_geometry名])" };を書く。今回の場合、MacのJIS配列のキーボードの定義を使うのでxkb_geometry { include "macintosh(applealu_jis)" };となる。

symbols

xkb/symbolsの配下にはシンボルと実際の入力をマッピングを定義する設定ファイルが入っている。

xkb/symbols/us

xkb_symbols "basic" {

    name[Group1]= "English (US)";

    key <TLDE> {    [     grave,    asciitilde  ]   };
    key <AE01> {    [     1,    exclam      ]   };
    key <AE02> {    [     2,    at      ]   };
    key <AE03> {    [     3,    numbersign  ]   };
}

key <AE01>はgeometoryで定義されたシンボル、{[grave, asciitilde ]};はシンボルに対応するキーが押された際の実際の入力を定義する。上記の例ではgraveはそのままキーを押した場合の入力、asciitildeはシフトキーを押しながらそのキーを押した場合の入力の定義となる。

MacBook上のJIS配列のキーボードをUS配列として使う場合、1キーの横にあるはずの`(TLDE)キーが存在しない為、代わりに使用されない¥キー(AE13)を`を入力する為に使用する。既に定義されているキーを置き換えるので、設定は以下のようになる。

replace key <AE13> { [ grave,   asciitilde ] };

キーマップ変更の手順

1. keymapファイルを作る

$HOME/.xkb/keymap

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us(mac)+us"
        replace key <AE13> { [ grave,   asciitilde ] };
    };
    xkb_geometry  { include "macintosh(applealu_jis)"   };
};

2. xkbcompでキーボードの設定を変更

xkbcomp -I/usr/share/X11/xkb ~/.xkb/keymap $DISPLAY> /dev/null

3. .zshrc(.bashrc)に追加

動作することを確認できたら、Ubuntu/Linux Mint起動時にその設定が反映されるように変更する。

echo 'xkbcomp -I/usr/share/X11/xkb ~/.xkb/keymap $DISPLAY> /dev/null' >> $HOME/.zshrc;
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1