お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-04-18 22:45:26

yfujita
新しいメンバ
登録日: 2009-01-18

[xkb]OpenOfficeでemacs風キーバインディングが働かない

Ubuntu 8.10で、X上で動くすべてのソフトでemacs風のキーバインディング
(Ctrl-f 右, Ctrl-b 左, Ctrl-p 上, Ctrl-n 下, Ctrl-h Backspace, Ctrl-d delete)
が動くようにxkbの設定ファイルを直接書きかえて見ました.

今のところfirefox, thunderbird, mlterm, inkscapeなどでは正常に機能しているみたいですが、
OpenOffice のwriterではCtrl-fで文章の最後まで、Ctrl-bで文章の先頭、Ctrl-nで2行下、Ctrl-pで2行上へ移動します. Ctrl-hで前行の末尾まで削除されています.

何とかOpenOfficeでもxkbの設定を有効にしたいのですが、どなたか何か手がかりありませんか?

ちなみに以下のように変えています.
xkbの設定の標準的な作法も何も知らないので、直接いじってます.
どこかにちゃんとした文章は無いものか....

*xkbのファイルの変更点
1, /usr/share/X11/xkb/symbols/jpの xkb_symbols "common" に以下を追加
    virtual_modifiers Control; // 必要ないかも
// キーボードのpの内容を以下のように変更. n b f h dもそれぞれ、<DOWN>, <LEFT>, <RGHT>, <BKSP>, <DELE>として変更.
    key <AD10> {
        type= "EMACS",
        symbols[Group1]= [ p, P, NoSymbol],
        actions[Group1]= [ NoAction(), NoAction(),
          RedirectKey(key=<UP>, clearmods=Control)]
    };
2, /usr/share/X11/xkb/types/completeの xkb_types "complete" 内に
    type "EMACS" {
      modifiers = Shift+Control;
      map[Shift] = Level2;
      map[Shift+Control] = Level2;
      map[Control] = Level3;
      level_name[Level1] = "Base";
      level_name[Level2] = "Shift";
      level_name[Level3] = "Emacs";
    };
を追加.

これだけだと、clearmods=Controlがなぜかうまく働いておらず、Controlが押されたままの挙動(xevではちゃんとstateが0x0になるんだけど)になるので、<DOWN>, <LEFT>, <RGHT>, <BKSP>, <DELE>を変更して、Controlが押されたときのキーを無視します(これによりCtrl-矢印キーが使えなくなります.).
3, /usr/share/X11/xkb/pcのxkb_symbols "editting" の<DOWN>, <LEFT>, <RGHT>, <BKSP>, <DELE>を以下のように変更.
Rightのところをそれぞれ、Down, Left, Right, Backspace, Delete にして他を同様に.
    key <RGHT> {
      type= "PC_CONTROL_LEVEL2",
      symbols[Group1] = [  Right, NoSymbol],
      actions[Group1]= [ NoAction(), NoAction()]
    };

この状態で、
setxkbmap jp
とすると設定が有効になります.

オフライン

 

Board footer

Powered by FluxBB