X で複数のキーボードを別々のレイアウトで使えるようにする

概要

Xを使うときに、複数のキーボードを切り替えてつかうときに、
キーボードごとに、設定をするのが大変なので、一回設定してすまないかを検討している

まとめ

xinput -list
setxkbmap -device デバイスID -layout jpとかusとか -option ctrl:nocapsとか
  • xinput は、setxkbmap で指定するデバイスIDを探すのに使う
  • setxkbmap は、実際に設定を変更する

日本語に切り替えて、英語に戻ると、レイアウトがリセットされるとき。

ibusなどをつかっているならそれの設定を見直す。

ibusの例では、Preference で Advanced を選び

  • Keyboard Layout のなかの、
    • Use system keboard layout のチェックボックスにチェックをいれる

xinput -list の出力例

xinput -list                                                     
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Performance MX                   id=8    [slave  pointer  (2)]
⎜   ↳ Logitech N305/B505                        id=9    [slave  pointer  (2)]
⎜   ↳ Logitech M545                             id=10   [slave  pointer  (2)]
⎜   ↳ Logitech M570                             id=11   [slave  pointer  (2)]
⎜   ↳ KINESIS FREESTYLE KB700 KB700 Kinesis Freestyle   id=17   [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Power Button                                id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=13   [slave  keyboard (3)]
    ↳ Logitech N305/B505                          id=14   [slave  keyboard (3)]
    ↳ Logitech M545                               id=15   [slave  keyboard (3)]
    ↳ KINESIS FREESTYLE KB700 KB700 Kinesis Freestyle id=16   [slave  keyboard (3)]
    ↳ KINESIS FREESTYLE KB700 KB700 Kinesis Freestyle id=18   [slave  keyboard (3)]
    ↳ Topre Corporation Realforce 91              id=12   [slave  keyboard (3)]

設定例

デバイスIDが、16のキーボードのCAPSをCTRLとして使う

xinput -list
setxkbmap -device 16 -layout us -option ctrl:nocaps

スクリーンロックがかかった後のKINESISのdevice id

マシンを再起動しなくても、
かわることがあるようです。

実際に自分の環境では、上にあげた xinput -list の16と17がいれかわっていた。
このあたりは、確認するスクリプトをつくったほうがよさそう

参考

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.