お知らせ

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

#1 2009-05-18 22:08:28

pores_n
メンバ
登録日: 2008-03-13

マウス側面のボタンを"Alt", "Super"に割り当てたい

Ubuntu 9.04で、Microsoft Natural Ergonomic Desktop 7000という製品に付属のマウスを使用しています。
Microsoft Hardware - キーボード - Microsoft Natural Ergonomic Desktop 7000
このマウスには側面に2つボタンがついていて、それぞれに"Alt", "Super"キーに相当する動作をさせたいと思っています。

具体的には、"Alt"キー + マウス左ボタンでウィンドウの移動、"Alt"キー + マウス中ボタンでウィンドウのサイズ変更、
"Super"キー + マウスホイール回転でデスクトップ全体の拡大縮小(Compiz使用時のみ)ができるのですが、
この動作をマウスだけで完結させようと考えています。

以下の2つの方法をとりましたが、いずれも方法でも未だ実現にいたっていません。


1. xbindkeys + xdotool

Ubuntu Weekly Recipe:第13回 ポインティングデバイスのカスタマイズ(2):マウスボタンの設定|gihyo.jp … 技術評論社
マウスボタンの拡張機能(xbindkeys+xvkbd) - Ubuntu Japanese Wiki
xdotool - command-line X11 automation tool
を参考にして以下の作業を行いました。

コード:

$ sudo apt-get install xbindkeys xdotool

~/.xbindkeysrcに

コード:

"xdotool keydown alt"
    b:8

"xdotool keyup alt"
    Release + alt + b:8

"xdotool keydown super"
    b:9

"xdotool keyup super"
    Release + Mod4 + b:9

と記述。
xvkbdではsuperキー押しっぱなしの命令を出すまでにいたらなかったのと、
xdotoolの方が記述が単純なのでこちらを使いました。

次に端末で

コード:

$ xbindkeys -n -v

として確認しました。

この方法では、
"Alt"を割り当てた側面ボタンを押している状態で"F4"を押してウィンドウを閉じたり、
"Super"を割り当てた側面ボタンを押している状態で"e"を押してCompizの展開ができたりするのですが、
"Alt"を割り当てた側面ボタンを押しながらマウス左ボタンやホイール回転などで、実現されるはずのウィンドウの移動や透明度の変更が機能しません。

どうもこの方法では、マウスのボタンを2つ以上同時に操作することができていないようです。
xbindkeysの出力を見ている限り、側面ボタンを押している状態の時に、他のマウスボタン入力をすると、xbindkeysがその入力を全て持っていってしまって、伝えるべき対象に届いていないように見えます。

xbindkeysを起動していない状態では、側面ボタンを押しながらでも、マウスクリックやスクロールができるので、
ハードウェアの制約ではないように思います。

次善の策として、~/.xbindkeysrcを

コード:

"xdotool mouseup 8 && xdotool keydown alt"
    b:8

"xdotool keyup alt"
    alt + b:8

"xdotool mouseup 9 && xdotool keydown super"
    b:9

"xdotool keyup super"
    Mod4 + b:9

とすることにより、
側面ボタンを押している間でも、他のマウス操作をできるようにしてみましたが、
この方法ではもう一度マウス側面ボタンを押すまで"Alt"や"Super"が押しっぱなしになってしまうので、
望んでいた動作とは少し違います。
ただ、現時点では望んでいる動作に一番近いとは思います。


2. xmodmap

キーボードのキーを入れ替えるためのxmodmapを使って、
マウスの側面ボタンに"Alt", "Super"を割り当てようとしました。
例えば、「無変換」キーに"Alt"を割り当てるには、

コード:

$ xmodmap -e "add Mod1 = Muhenkan"

とすればできるのですが、
マウスのボタンに"add Mod1"することはできないようです。
xmodmapでは設定できませんが、
xmodmapよりも下位層でどうにかできるのかもしれませんが、
どう手をつけてよいのかわかりません。


以上のように、マウス側面ボタンを"Alt", "Super"の完全な代替として使うにはいたっていませんが、
何か試してみるべきことがあれば、教えてください。

xmodmapの下位層で、マウスボタンに"add Mod1"相当が実現できればそれで良いのですが、
他の可能性としては、xbindkeysの代替パッケージを探す(自分の探した範囲では良いものが見つかりませんでした)。
なければ、xbindkeysに要望を出してみるといったところでしょうか。

#そもそもXの制約でそのようなことはできないという可能性もあるかもしれません。

オフライン

 

#2 2009-05-24 17:42:36

kawaji
メンバ
登録日: 2008-05-01

Re: マウス側面のボタンを"Alt", "Super"に割り当てたい

xbindkeys 等は今ちょっと試してる途中で全然わからないのですが、
pores_n さんが挙げられた動作について、自分の環境では Easystroke というソフトウェアによって実現できています。

ペンタブレット向けのジェスチャー認識が主目的で開発されたもののようですが、マウスボタンの割り当てのカスタマイズにも対応しています。ただ、このソフトウェアの常時稼働が必要になり 6 MB 弱ほどリソースを消費することになりますが。

公式サイト : http://easystroke.wiki.sourceforge.net/Documentation

インストール

コード:

$ sudo apt-get install easystroke

設定

1.
Preferences タブ > Behaviour > Additional Buttons で、 ボタン 8 をジェスチャー認識のトリガーとなる「Gesture Button」かつ「Instant Gesture」に指定。

2.
Actions タブ 画面で Add new action ボタンを押し、ストローク欄をダブルクリック。先ほどジェスチャボタンとして指定したボタン 8 を押すとストロークの登録が直ちに完了。

3.
次に同じ行の Type 欄をクリックして、メニューから実行アクションのタイプを「Ignore」に指定。

4.
Detail 欄をクリックすると、キーの入力を促されるので、Alt を押しながら適当なアルファベットキーを押す。こうすると Alt キーだけの登録が可能。

ボタン 9 への Super キーの割り当ても上と同様。

設定を終えると、例えば ボタン 8 またはボタン 9 を押しながらスクロールボタンを回転させてウィンドウの透明度の変更や拡大縮小ができるようなると思います。

最後の編集者: kawaji (2009-05-24 17:46:43)

オフライン

 

#3 2009-05-25 08:23:08

pores_n
メンバ
登録日: 2008-03-13

Re: マウス側面のボタンを"Alt", "Super"に割り当てたい

easystrokeは一度試したのですが、
"Alt"キー単独の設定に至らなかったため、諦めてしまっていました。
しかし、kawajiさんに提示していただいた説明に沿って、
設定したところ、完全に望み通りの動作が実現できました。

このeasystrokeはマウス側面ボタンを押すと、
画面右上に"Alt"などと表示されるのが良いですね。
それにFirefox上ではマウス側面ボタンが
今まで通り「戻る」「進む」として使えているというオマケまでついてきました。

どうもありがとうございます。

オフライン

 

Board footer

Powered by FluxBB