web-dev-qa-db-ja.com

キーボードでマウスクリックをエミュレートする

できればxmodmapを使用して、キーボードのボタンをマウスクリックのように動作させたいと思います。どうすればいいのですか?

Ubuntu10.10を実行しています。

14
Zona

次の手順は、キーボードのキーをマウスボタンに再配線するのに役立ちます。

  1. xevユーティリティを使用してキーボードキーを識別します。

    Xevユーティリティを実行し、再配線するキーボードキーを押すと、次のように出力されます。

    KeyPress event, serial 37, synthetic NO, window 0x3e00001,
    root 0x82, subw 0x0, time 28977858, (-419,294), root:(175,613),
    state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

    再マッピングされるキーコードに注意してください。

  2. Xkbsetユーティリティを実行します

    xkbset m

  3. Xmodmapユーティリティを使用して再マップします。

    以下の場合、メニューキーはマウスの右ボタンに再マップされます。

    xmodmap -e "keycode 135 = Pointer_Button3"

7
ramasamyz

XmodmapとPointer_Button1キーマップを使用してこれを実現できると思います。

ファイル/usr/include/X11/keysymdef.hで正確なスペルと大文字の使用を確認しますが、ダブルクリック(1、2、3など)でもキーボードキーをマウスボタン(1、2、3など)にマップできるはずです。 460行目あたりのヘッダーファイルを参照してください)

keysym W = Pointer_Button1

動作する可能性があり、Wキーがマウスの左ボタンとして機能します。 Wを使用しない場合を除いて、別のキーを使用することをお勧めします。 (いいえ、自分で試すつもりはありません。Wが必要です!)

また、xmodmapのマニュアルページ、および/usr/include/X11/keysymdef.hの内容を確認して、スペルを正しく確認してください。 xmodmapのkeysym名を使用するには、XK_プレフィックスを削除します。

私のDebianシステムのx11-proto-core-devパッケージにある(keysymdef.h)のようです...ファイルとその内容をオンラインで検索したい場合がありますが、関連するすべての-devファイルをインストールしたいのではないかと思います。それを入手してください。 GIYF。

これを行う別の方法について頭の後ろで何かがくすぐりますが、今は何も来ていません。

ああ!必要に応じて、テンキーをフル機能の2ボタン(スクロールホイールなし!)マウスに変えるキーボードマウスエミュレーションを調べることができます。

4
lornix

組み込みの「キーボードマウスエミュレーション」モードはこれを行うことができますが、さまざまなマウスのクリックとプレスをエミュレートするための事前設定されたキーの組み合わせがあります(ドラッグ用) )。

(参考:これをオンにするためのキーの組み合わせは デフォルトのキーマップから削除されました しばらく前からあり、現在はOption XkbOptions "keypad:pointerkeys"が必要です。)

このモードをオンにする方法は、キーを押すことだけではありません。

xkbset m

これは http://crunchbang.org/forums/viewtopic.php?id=27937 に従って行い、厄介なタイムアウトを制御したり、コマンドラインからオフにしたりすることができます。厄介なタイムアウトをオフにするには:

xkbset exp =m

したがって、xkbsetは、(このモードをオンにするためだけのキーを持つよりも)本当に便利です。xkbsetを使用すると、優先タイムアウトなどをより細かく制御できるからです。

テンキーが使用されます。いくつかの基本的な組み合わせ(詳細は http://en.linuxreviews.org/HOWTO_use_the_numeric_keyboard_keys_as_mouse_in_XOrg

  • /*-は、左、中央、または右のボタンを選択するためのものです。
  • 5は、選択済みボタンをクリックするためのものです。
  • 0および.は、選択されたボタンを押して放すためのものです(ドラッグなど)

「キーボードマウスエミュレーション」を常に有効にする際の問題に関する注意事項

  1. 「キーボードマウスエミュレーション」を常に有効にできませんでした。そのため、これを行うために特別なキー(keypad:pointerkeysなど)に依存しました。

  2. Xfceも起動時にこれらの設定をいじっていたことがわかったので、Xfceの前にxkbset mを実行すると、設定はアクティブになりません。したがって、全体的な希望に合わせてXfce構成の設定を変更する必要がありました。つまり、Xfce設定:アクセシビリティ:マウス:エミュレーションを有効にする。 (そのようなXfceオプションの存在について私が学んだ情報源は: https://bugzilla.xfce.org/show_bug.cgi?id=386 でした。)これは助けになったようです。 (タッチパッドもxinput float ...で無効にしています。これは、Linuxコンソールを切り替えることで混乱しますが、少なくともXfce設定でこのデバイスを無効にすることで回避できます。)