
Ubuntu日本語フォーラム

ログインしていません。
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
とすると設定が有効になります.
オフライン