web-dev-qa-db-ja.com

ibusはxmodmapをオーバーライドします

Xmodmapを使用してCtrlキーとAltキーを切り替えます:

~ $> cat .Xmodmap
!
! based on: http://www.emacswiki.org/emacs/SwapControlAltAndCapsLock#toc8
!

!----------------------------------------------------------
! Swap Control and Alt keys, both sides
!----------------------------------------------------------

! First clear all modifiers & control
clear control
clear mod1
clear mod4

! Swap Control_L and Alt_L
keycode  64 = Control_L
keycode  37 = Alt_L Meta_L

! Menu becomes Alt_R Meta_R (AltGr)
! keycode 135 = Alt_R Meta_R

! Define Control_R and Alt_R similar to Control_L and Alt_L
keycode 108 = Control_L
keycode 105 = Alt_L Meta_L

! We need to set keycodes first, as some programs (emacs!) read
! the key names and seem to ignore what's below.
add mod1    = Alt_L Alt_R Meta_L Meta_R
add mod4    = Super_L Super_R
add control = Control_L Control_R


!------------------------------------------
! Caps_Lock becomes an additional BackSpace
!------------------------------------------
! remove lock = Caps_Lock
! keysym Caps_Lock = BackSpaceclear control
! clear mod1
! keycode 37 = Alt_L Meta_L
! keycode 64 = Control_L
! keycode 105 = Alt_R Meta_R
! keycode 108 = Control_R
! add control = Control_L Control_R
! add mod1 = Alt_L Meta_L Alt_R Meta_R

それはうまくいきます。ただし、ibusを起動すると、キーマッピングはibusによって上書きされます。これを回避する方法はありますか?

3
Nick
  • 実際には、メソッド変更時に.xmodmapを再ロードするためのセットアップGUIから隠されたibusオプションがあります。

    dconf write /desktop/ibus/general/use-xmodmap true
    

    まだ試せませんでしたが、/etc/dconf/db/ibus.d/00-upstream-settingsで利用可能なオプションを確認できます。

    Xubuntu 16.04を使用していますが、14.04とは異なる場合があります。

  • 別の方法

    1. Ibusがシステムキーマップを使用しないようにする

      dconf write /desktop/ibus/general/use-system-keyboard-layout false
      

      またはibus-setupを使用して

    2. 独自のキーマッピングを変更する

      $ cat /usr/share/ibus/keymaps/modifiers 
      keycode 29 = Control_L
      keycode 42 = Shift_L
      keycode 54 = Shift_R
      keycode 56 = Alt_L
      keycode 97 = Control_R
      keycode 100 = Alt_R
      keycode 125 = Super_L
      keycode 126 = Super_R
      keycode 127 = Menu
      

      リファレンス:構成パス

      ibus_keymap_get()

      IBusKeymap * ibus_keymap_get  (const gchar *name);
      
      Get an IBusKeymap associated with the giving name.
      
      This function loads the keymap file specified in name in
       the IBUS_DATA_DIR/keymaps directory.
      
      name :
        The keymap file to be loaded, such as 'us', 'jp'.
      
      Returns :
        An IBusKeymap associated with the giving name; or NULL if failed.
      
1
user.dz

正確にはIBusの問題ではありません(IBusにはたくさんの問題がありますが(1)、これは考えていません)。

Ubuntuは、最新のLinuxと同様に、xkb拡張機能を使用してキーボードを定義します。 xmodmapは、 それでの動作が保証されない である、従来のソート済みのものです。

ドキュメントは非常に不足しています。 Arch Linux(相変わらず) 良いページがある 。 Ubuntu Gnome(2)のバグに悩まされている切り替えを回避するために キーボードを調整 に管理しました。

システムは複雑です-- herehere のヘルプが見つかりました。しかし、修飾子を変更する方法を理解することはまだ私のスキルの範囲外です...そして、私は周りのほとんどの人がそれを理解していないと思います(怖い)。


脚注:

(1) キーボードは間違ったレイアウトをデフォルトのままにしますhttps://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1246272 、はるかに...

(2) https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1218322https://bugs.launchpad.net/ gnome-settings-daemon/+ bug/124409

1
Rmano

すでに以下を試してみましたか。

... IBus設定の[詳細]タブで[システムキーボードレイアウトを使用]オプションを有効にしてみてください。

http://tots.1o24.org/how-to-stop-ibus-from-removing-your-xmodmap-mappings/ からのヒント

0
f01

私はすでにこの問題に直面していましたが、2つのジョブを持つコマンドを実行するキーボードショートカットを作成することで、最終的にこの解決策を見つけました。

  • 送る Alt + Shift システムへのキーストローク(このキーの組み合わせは、IBUSの入力ソースを変更します)
  • Xmodmapプロファイルをシステムキーマップにロードします

このソリューションの詳細については、私の投稿をご覧ください。 http://blog.z1k.pw/?p=6

0
GiapLv