キーボードイベントを登録するBluetoothマウスジェスチャーの制御


9

tl; dr

ロジクールT630を購入しました。これは、ジェスチャー(PDF)を介していくつかのキーボードイベントをサポートするBluetoothマウスです。これらのジェスチャーは上手くダンディですが、私はそれらをほとんど使用しません。私はそれらを取り除くためにひどい時間を過ごしています。

優先度の高いものから順に、以下を実行します。

  1. これらのジェスチャーを無効にする
  2. ジェスチャーを再マッピングします(ファームウェアをハッキングしたり、Windows / OS Xデバイスドライバーをリバースエンジニアリングしない限り、これは不可能だと思います)

したくない:

  • Windowsを使用する
  • すべてのジェスチャーを無効にする

詳細については、次をお読みください…

ボタンとジェスチャー

考えられる13のマウスイベントは次のとおりです。

  1. 左クリック
  2. 中クリック
  3. 右クリック
  4. スクロールアップする
  5. 下へスクロール
  6. 左にスクロール
  7. 右にスクロール
  8. 左にスワイプ
  9. 右端にスワイプ
  10. 2本指で左にスワイプ
  11. 2本の指で右にスワイプ
  12. ダブルタップ
  13. 2本指ダブルタップ

最初の7つは、OSによるマッピング順です。

最初の3つだけが機械的です。他のすべてはタッチサーフェスを使用します。

タッチジェスチャー

GUIオプション

Kubuntu Trustyでのセットアップは簡単でしたが、これらの他のジェスチャーの構成はほとんどサポートされていません。

これらのジェスチャーは、次のものとは関係ありません。

  • タッチパッド(synaptics実行されていません)
  • アクセシビリティ
  • ホットコーナー
  • 標準のマウスジェスチャー

それらに関連するすべての設定がチェックされ、すべてオフになっています。

コマンドライン設定

lomoco

lomocoロジクールのUSBマウスのヘルプのconfigureの特別な機能にユーティリティが適用されません。

xinput

xinputはいくつかの助けを提供するかもしれないと思った:

$ xinput --list | grep pointer
 Virtual core pointer                          id=2    [master pointer  (3)]
    Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    Ultrathin Touch Mouse                     id=13   [slave  pointer  (2)]
$ xinput --list-props 13
Device 'Ultrathin Touch Mouse':
    Device Enabled (144):   1
    Coordinate Transformation Matrix (146): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (266): 0
    Device Accel Constant Deceleration (267):   1.000000
    Device Accel Adaptive Deceleration (268):   1.000000
    Device Accel Velocity Scaling (269):    10.000000
    Device Product ID (261):    1133, 45069
    Device Node (262):  "/dev/input/event11"
    Evdev Axis Inversion (270): 0, 0
    Evdev Axes Swap (272):  0
    Axis Labels (273):  "Rel X" (154), "Rel Y" (155), "Rel Horiz Wheel" (746), "Rel Vert Wheel" (265)
    Button Labels (274):    "Button Left" (147), "Button Middle" (148), "Button Right" (149), "Button Wheel Up" (150), "Button Wheel Down" (151), "Button Horiz Wheel Left" (152), "Button Horiz Wheel Right" (153), "Button Side" (1032), "Button Extra" (1033), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264)
    Evdev Middle Button Emulation (275):    0
    Evdev Middle Button Timeout (276):  50
    Evdev Third Button Emulation (277): 0
    Evdev Third Button Emulation Timeout (278): 1000
    Evdev Third Button Emulation Button (279):  3
    Evdev Third Button Emulation Threshold (280):   20
    Evdev Wheel Emulation (281):    0
    Evdev Wheel Emulation Axes (282):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (283):    10
    Evdev Wheel Emulation Timeout (284):    200
    Evdev Wheel Emulation Button (285): 4
    Evdev Drag Lock Buttons (286):  0

13個のボタンのラベルに注意してください。

$ xinput --get-button-map "Ultrathin Touch Mouse"
1 2 3 4 5 6 7 8 9 10 11 12 13

それらをオフにしても役に立たなかった:

$ xinput --set-button-map "Ultrathin Touch Mouse" 1 2 3 4 5 6 7 0 0 0 0 0 0

ただし、たとえば、マウスの中央ボタンを左クリックに変えることができます。

$ xinput --set-button-map "Ultrathin Touch Mouse" 1 1 3 4 5 6 7 0 0 0 0 0 0

xmodmap

と同様xinput、同じ結果:

$ xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0"

inputkbd

以下の elmichaによって提案されていますが、これはカーネルレベルで機能しており、ジェスチャーがnullキーボードイベントを発生させるようにしています。次のプロセスで動作するはずですが、ここでもうまくいきません。

$ sudo input-kbd 4 > keymap # note the 4 is from /dev/input/event4
# edit the keymap to map any combination of keys to either 0 or 240 (KEY_UNKNOWN)
# e.g. change this:
# 0x700e0 =  29 # KEY_LEFTCTRL
# to this:
# 0x700e0 =   0 # KEY_LEFTCTRL
# or this:
# 0x700e0 = 240 # KEY_LEFTCTRL
$ sudo input-kbd -f keymap 4
$ sudo input-kbd 4 # should return the updated keymap

これを行った後、キーマップは変化を示しません。

xkbcomp

これは、X入力ハッカーであるPeter Huttererによって提案されました。それでも運がない:

$ xkbcomp -xkb $DISPLAY t630.xkb
# edit the keyboard description and replace the definition of any key to NoSymbol or VoidSymbol
# e.g. change this:
#     key <LCTL> {         [       Control_L  ] };
# to this:
#     key <LCTL> {         [       NoSymbol   ] };
# or this:
#     key <LCTL> {         [       VoidSymbol ] };
$ sudo xkbcomp -i 8 t630.xkb $DISPLAY # here the 8 is the id in xinput, names don't work
$ xkbcomp -xkb -i 8 $DISPLAY - # should return the updated keyboard description

これを実行した後、キーボードの説明に変化はありません。

ピーターは、これはおそらくXキーボードまたはマウスとしてのデバイスの性質に関して混乱しているという事実のせいであると感じていました。一種の反対の問題を持つこのバグのようなものです。これは、他のすべての予想されるアイテムが機能しない理由を説明している可能性があります。ただし、evdev同じ理由で使用することはできません。

evdev

最初は機能しているように見えましたが、機能していません。これは、またはにX以下を追加することにより、ボタンマッピングを設定するための汎用入力ドライバーを活用しようとします。/usr/share/X11/xorg.conf.d/10-evdev.conf/etc/X11/xorg.conf.d/10-evdev.conf

# custom for Logitech Ultrathin Touch mouse

Section "InputDevice"
    Identifier "Logitech bluetooth Touch Mouse"
    Driver "evdev"
    Option "Name"   "Ultrathin Touch Mouse"
    Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection

Section "InputClass"
    Identifier  "Ultrathin Touch Mouse"
    Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection

これは/var/log/Xorg.0.log(を使用してgrep EE)エラーなしで機能するようでxinput、ボタンのマッピングを確認しますが、欲望の効果にはなりません。

ただし、これ T631で動作することわかっています。

キーボードイベント

問題は、これらのジェスチャーがキーボードイベントを生成するという事実にあると私は思います。

$ sudo evemu-record /dev/input/event4 | grep "E: "
# swipe edge right
E: 0.000000 0004 0004 458976    # EV_MSC / MSC_SCAN             458976
E: 0.000000 0001 001d 0001      # EV_KEY / KEY_LEFTCTRL         1
E: 0.000000 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 0.000000 0001 007d 0001      # EV_KEY / KEY_LEFTMETA         1
E: 0.000000 0004 0004 458795    # EV_MSC / MSC_SCAN             458795
E: 0.000000 0001 000f 0001      # EV_KEY / KEY_TAB              1
E: 0.000000 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
E: 0.002980 0004 0004 458976    # EV_MSC / MSC_SCAN             458976
E: 0.002980 0001 001d 0000      # EV_KEY / KEY_LEFTCTRL         0
E: 0.002980 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 0.002980 0001 007d 0000      # EV_KEY / KEY_LEFTMETA         0
E: 0.002980 0004 0004 458795    # EV_MSC / MSC_SCAN             458795
E: 0.002980 0001 000f 0000      # EV_KEY / KEY_TAB              0
E: 0.002980 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
# swipe edge left
E: 3.306977 0004 0004 458978    # EV_MSC / MSC_SCAN             458978
E: 3.306977 0001 0038 0001      # EV_KEY / KEY_LEFTALT          1
E: 3.306977 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 3.306977 0001 007d 0001      # EV_KEY / KEY_LEFTMETA         1
E: 3.306977 0004 0004 458866    # EV_MSC / MSC_SCAN             458866
E: 3.306977 0001 00c1 0001      # EV_KEY / KEY_F23              1
E: 3.306977 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
E: 3.310979 0004 0004 458978    # EV_MSC / MSC_SCAN             458978
E: 3.310979 0001 0038 0000      # EV_KEY / KEY_LEFTALT          0
E: 3.310979 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 3.310979 0001 007d 0000      # EV_KEY / KEY_LEFTMETA         0
E: 3.310979 0004 0004 458866    # EV_MSC / MSC_SCAN             458866
E: 3.310979 0001 00c1 0000      # EV_KEY / KEY_F23              0
E: 3.310979 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
# two finger double tap
E: 10.225976 0004 0004 458983   # EV_MSC / MSC_SCAN             458983
E: 10.225976 0001 007e 0001     # EV_KEY / KEY_RIGHTMETA        1
E: 10.225976 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 10.229986 0004 0004 458983   # EV_MSC / MSC_SCAN             458983
E: 10.229986 0001 007e 0000     # EV_KEY / KEY_RIGHTMETA        0
E: 10.229986 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
# two finger swipe left
E: 27.934977 0004 0004 589828   # EV_MSC / MSC_SCAN             589828
E: 27.934977 0001 0113 0001     # EV_KEY / BTN_SIDE             1
E: 27.934977 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 27.937983 0004 0004 589828   # EV_MSC / MSC_SCAN             589828
E: 27.937983 0001 0113 0000     # EV_KEY / BTN_SIDE             0
E: 27.937983 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
# two finger swipe right
E: 32.513990 0004 0004 589829   # EV_MSC / MSC_SCAN             589829
E: 32.513990 0001 0114 0001     # EV_KEY / BTN_EXTRA            1
E: 32.513990 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 32.516994 0004 0004 589829   # EV_MSC / MSC_SCAN             589829
E: 32.516994 0001 0114 0000     # EV_KEY / BTN_EXTRA            0
E: 32.516994 0000 0000 0000     # ------------ SYN_REPORT (0) ----------

これまでのようにキーマップが懸念され、これらは、以下を参照してください。

$ sudo input-kbd 4 | grep -e KEY_LEFTCTL -e KEY_LEFTMETA -e KEY_TAB -e KEY_LEFTALT -e KEY_F23 -e KEY_RIGHTMETA -e BTN_SIDE -e BTN_EXTRA
0x700e2 =  56  # KEY_LEFTALT
0x700e3 = 125  # KEY_LEFTMETA
0x700e7 = 126  # KEY_RIGHTMETA
0x7002b =  15  # KEY_TAB
0x70072 = 193  # KEY_F23
0x700e2 =  56  # KEY_LEFTALT
0x700e3 = 125  # KEY_LEFTMETA
0x700e7 = 126  # KEY_RIGHTMETA
0x90004 = 275  # BTN_SIDE
0x90005 = 276  # BTN_EXTRA

ダブルタップしても何も起こらないようです。

その他の参考文献

また、前述のマウスがピンコードデータベースに存在しないというバグの同様の問題への参照を指摘すると役立つ場合がありgnome-bluetoothます。言うまでもなく、この件に関するそれ以上の解説は、そのバグ報告に関する公式にはトピック外ですが、参照はこの問題の性質に関するいくつかの見方を追加するのに役立ちます。

これevemu-describe /dev/input/event4FWIW の出力です。

Bluetoothアダプター

FWIW 2つの異なるUSB Bluetoothアダプターを使用しました。

$ lsusb | grep Bluetooth
Bus 007 Device 010: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
$ lsusb | grep Bluetooth
Bus 007 Device 011: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0

2
コメントは詳細な議論のためのものではありません。この会話はチャットに移動しました
ミッチ

私は問題を理解しました:Windows VM-標準のWindows Logitechドライバーにインストールしてvmmouse_detectユーティリティを参照する必要があると思います。xmodmapそしてxinputxorg.confあなたのKubuntuの下では役に立ちますが、Windows VMの下では役に立ちません。したがって、WinVMでは、Windows用の標準のLogitechユーティリティを使用してマウスを設定できるはずです。
迅速

これを解決したことがありますか?
Seth

いいえ、修正されていません。アイデアは?
wxl 2015年

回答:


3

多くの苦労の後、私はなんとか役立つ何かをするキーマップを作成することができました。

最初に、前の回答に関するいくつかのメモ(まだコメントはできません):

  1. 氏のバックアップによって提供されたfixMouseスクリプトは機能しません。マウスのキーボードエントリがxinputに間違った名前で表示されることがあります。つまり、私の場合は次のようになります。

    ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
    ...
    ⎜   ↳ Ultrathin Touch Mouse                     id=11   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    
    ...
        ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    

    一方、input-utilsからlsinputを使用して正しいIDを見つけることができます。

    lsinput 2>&1|grep -B5 "Ultrathin Touch Mouse"
    /dev/input/event12
       bustype : BUS_BLUETOOTH
       vendor  : 0x46d
       product : 0xb00d
       version : 1792
       name    : "Ultrathin Touch Mouse"
    
  2. 何らかの理由でマウスのマップをダンプするとき、いくつかのコードが重複していて(0x700e0と0x700e7の間)、それらを見つけて削除するように注意してください。

  3. すべてのキーコードをKEY_UNKNOWNで置き換えると、ランダムな文字のバーストが防止されますが、特別なタッチアクションは役に立たなくなります。代わりに、いくつかのジェスチャーを便利な組み合わせに再マッピングできることがわかりました。特に、「左からスワイプ」はコード0x700e0 + 0x700e3 + 0x7002bを送信し、「右からスワイプ」は0x700e3 + 0x700e3 + 0x70072を送信します。両方のジェスチャーに共通する0x700e3をKEY_UNKNOWにマッピングして、邪魔にならないようにしました。次に、残りのキーコードを使用してCTRL + F8(デスクトップグリッド)とALT-F2(ランナー)を作成しましたが、もちろん2つのキーの任意の組み合わせを生成できます。これが私のマップです。コピー/貼り付けの際、空の行や最初の空白スペースを残さないように注意してください(これらはinput-kbdを壊します)。

    0x700e3 = KEY_UNKNOWN
    0x700e0 = KEY_LEFTCTRL
    0x7002b = KEY_F8
    0x700e2 = KEY_LEFTALT
    0x70072 = KEY_F2
    0x70004 = KEY_UNKNOWN
    0x70005 = KEY_UNKNOWN
    0x70006 = KEY_UNKNOWN
    0x70007 = KEY_UNKNOWN
    0x70008 = KEY_UNKNOWN
    0x70009 = KEY_UNKNOWN
    0x7000a = KEY_UNKNOWN
    0x7000b = KEY_UNKNOWN
    0x7000c = KEY_UNKNOWN
    0x7000d = KEY_UNKNOWN
    0x7000e = KEY_UNKNOWN
    0x7000f = KEY_UNKNOWN
    0x70010 = KEY_UNKNOWN
    0x70011 = KEY_UNKNOWN
    0x70012 = KEY_UNKNOWN
    0x70013 = KEY_UNKNOWN
    0x70014 = KEY_UNKNOWN
    0x70015 = KEY_UNKNOWN
    0x70016 = KEY_UNKNOWN
    0x70017 = KEY_UNKNOWN
    0x70018 = KEY_UNKNOWN
    0x70019 = KEY_UNKNOWN
    0x7001a = KEY_UNKNOWN
    0x7001b = KEY_UNKNOWN
    0x7001c = KEY_UNKNOWN
    0x7001d = KEY_UNKNOWN
    0x7001e = KEY_UNKNOWN
    0x7001f = KEY_UNKNOWN
    0x70020 = KEY_UNKNOWN
    0x70021 = KEY_UNKNOWN
    0x70022 = KEY_UNKNOWN
    0x70023 = KEY_UNKNOWN
    0x70024 = KEY_UNKNOWN
    0x70025 = KEY_UNKNOWN
    0x70026 = KEY_UNKNOWN
    0x70027 = KEY_UNKNOWN
    0x70028 = KEY_UNKNOWN
    0x70029 = KEY_UNKNOWN
    0x7002a = KEY_UNKNOWN
    0x7002c = KEY_UNKNOWN
    0x7002d = KEY_UNKNOWN
    0x7002e = KEY_UNKNOWN
    0x7002f = KEY_UNKNOWN
    0x70030 = KEY_UNKNOWN
    0x70031 = KEY_UNKNOWN
    0x70032 = KEY_UNKNOWN
    0x70033 = KEY_UNKNOWN
    0x70034 = KEY_UNKNOWN
    0x70035 = KEY_UNKNOWN
    0x70036 = KEY_UNKNOWN
    0x70037 = KEY_UNKNOWN
    0x70038 = KEY_UNKNOWN
    0x70039 = KEY_UNKNOWN
    0x7003a = KEY_UNKNOWN
    0x7003b = KEY_UNKNOWN
    0x7003c = KEY_UNKNOWN
    0x7003d = KEY_UNKNOWN
    0x7003e = KEY_UNKNOWN
    0x7003f = KEY_UNKNOWN
    0x70040 = KEY_UNKNOWN
    0x70041 = KEY_UNKNOWN
    0x70042 = KEY_UNKNOWN
    0x70043 = KEY_UNKNOWN
    0x70044 = KEY_UNKNOWN
    0x70045 = KEY_UNKNOWN
    0x70046 = KEY_UNKNOWN
    0x70047 = KEY_UNKNOWN
    0x70048 = KEY_UNKNOWN
    0x70049 = KEY_UNKNOWN
    0x7004a = KEY_UNKNOWN
    0x7004b = KEY_UNKNOWN
    0x7004c = KEY_UNKNOWN
    0x7004d = KEY_UNKNOWN
    0x7004e = KEY_UNKNOWN
    0x7004f = KEY_UNKNOWN
    0x70050 = KEY_UNKNOWN
    0x70051 = KEY_UNKNOWN
    0x70052 = KEY_UNKNOWN
    0x70053 = KEY_UNKNOWN
    0x70054 = KEY_UNKNOWN
    0x70055 = KEY_UNKNOWN
    0x70056 = KEY_UNKNOWN
    0x70057 = KEY_UNKNOWN
    0x70058 = KEY_UNKNOWN
    0x70059 = KEY_UNKNOWN
    0x7005a = KEY_UNKNOWN
    0x7005b = KEY_UNKNOWN
    0x7005c = KEY_UNKNOWN
    0x7005d = KEY_UNKNOWN
    0x7005e = KEY_UNKNOWN
    0x7005f = KEY_UNKNOWN
    0x70060 = KEY_UNKNOWN
    0x70061 = KEY_UNKNOWN
    0x70062 = KEY_UNKNOWN
    0x70063 = KEY_UNKNOWN
    0x70064 = KEY_UNKNOWN
    0x70065 = KEY_UNKNOWN
    0x70066 = KEY_UNKNOWN
    0x70067 = KEY_UNKNOWN
    0x70068 = KEY_UNKNOWN
    0x70069 = KEY_UNKNOWN
    0x7006a = KEY_UNKNOWN
    0x7006b = KEY_UNKNOWN
    0x7006c = KEY_UNKNOWN
    0x7006d = KEY_UNKNOWN
    0x7006e = KEY_UNKNOWN
    0x7006f = KEY_UNKNOWN
    0x70070 = KEY_UNKNOWN
    0x70071 = KEY_UNKNOWN
    0x70073 = KEY_UNKNOWN
    0x70074 = KEY_UNKNOWN
    0x70075 = KEY_UNKNOWN
    0x70076 = KEY_UNKNOWN
    0x70077 = KEY_UNKNOWN
    0x70078 = KEY_UNKNOWN
    0x70079 = KEY_UNKNOWN
    0x7007a = KEY_UNKNOWN
    0x7007b = KEY_UNKNOWN
    0x7007c = KEY_UNKNOWN
    0x7007d = KEY_UNKNOWN
    0x7007e = KEY_UNKNOWN
    0x7007f = KEY_UNKNOWN
    0x70080 = KEY_UNKNOWN
    0x70081 = KEY_UNKNOWN
    0x70082 = KEY_UNKNOWN
    0x70083 = KEY_UNKNOWN
    0x70084 = KEY_UNKNOWN
    0x70085 = KEY_UNKNOWN
    0x70086 = KEY_UNKNOWN
    0x70087 = KEY_UNKNOWN
    0x70088 = KEY_UNKNOWN
    0x70089 = KEY_UNKNOWN
    0x7008a = KEY_UNKNOWN
    0x7008b = KEY_UNKNOWN
    0x7008c = KEY_UNKNOWN
    0x7008d = KEY_UNKNOWN
    0x7008e = KEY_UNKNOWN
    0x7008f = KEY_UNKNOWN
    0x70090 = KEY_UNKNOWN
    0x70091 = KEY_UNKNOWN
    0x70092 = KEY_UNKNOWN
    0x70093 = KEY_UNKNOWN
    0x70094 = KEY_UNKNOWN
    0x70095 = KEY_UNKNOWN
    0x70096 = KEY_UNKNOWN
    0x70097 = KEY_UNKNOWN
    0x70098 = KEY_UNKNOWN
    0x70099 = KEY_UNKNOWN
    0x7009a = KEY_UNKNOWN
    0x7009b = KEY_UNKNOWN
    0x7009c = KEY_UNKNOWN
    0x7009d = KEY_UNKNOWN
    0x7009e = KEY_UNKNOWN
    0x7009f = KEY_UNKNOWN
    0x700a0 = KEY_UNKNOWN
    0x700a1 = KEY_UNKNOWN
    0x700a2 = KEY_UNKNOWN
    0x700a3 = KEY_UNKNOWN
    0x700a4 = KEY_UNKNOWN
    0x700a5 = KEY_UNKNOWN
    0x700a6 = KEY_UNKNOWN
    0x700a7 = KEY_UNKNOWN
    0x700a8 = KEY_UNKNOWN
    0x700a9 = KEY_UNKNOWN
    0x700aa = KEY_UNKNOWN
    0x700ab = KEY_UNKNOWN
    0x700ac = KEY_UNKNOWN
    0x700ad = KEY_UNKNOWN
    0x700ae = KEY_UNKNOWN
    0x700af = KEY_UNKNOWN
    0x700b0 = KEY_UNKNOWN
    0x700b1 = KEY_UNKNOWN
    0x700b2 = KEY_UNKNOWN
    0x700b3 = KEY_UNKNOWN
    0x700b4 = KEY_UNKNOWN
    0x700b5 = KEY_UNKNOWN
    0x700b6 = KEY_UNKNOWN
    0x700b7 = KEY_UNKNOWN
    0x700b8 = KEY_UNKNOWN
    0x700b9 = KEY_UNKNOWN
    0x700ba = KEY_UNKNOWN
    0x700bb = KEY_UNKNOWN
    0x700bc = KEY_UNKNOWN
    0x700bd = KEY_UNKNOWN
    0x700be = KEY_UNKNOWN
    0x700bf = KEY_UNKNOWN
    0x700c0 = KEY_UNKNOWN
    0x700c1 = KEY_UNKNOWN
    0x700c2 = KEY_UNKNOWN
    0x700c3 = KEY_UNKNOWN
    0x700c4 = KEY_UNKNOWN
    0x700c5 = KEY_UNKNOWN
    0x700c6 = KEY_UNKNOWN
    0x700c7 = KEY_UNKNOWN
    0x700c8 = KEY_UNKNOWN
    0x700c9 = KEY_UNKNOWN
    0x700ca = KEY_UNKNOWN
    0x700cb = KEY_UNKNOWN
    0x700cc = KEY_UNKNOWN
    0x700cd = KEY_UNKNOWN
    0x700ce = KEY_UNKNOWN
    0x700cf = KEY_UNKNOWN
    0x700d0 = KEY_UNKNOWN
    0x700d1 = KEY_UNKNOWN
    0x700d2 = KEY_UNKNOWN
    0x700d3 = KEY_UNKNOWN
    0x700d4 = KEY_UNKNOWN
    0x700d5 = KEY_UNKNOWN
    0x700d6 = KEY_UNKNOWN
    0x700d7 = KEY_UNKNOWN
    0x700d8 = KEY_UNKNOWN
    0x700d9 = KEY_UNKNOWN
    0x700da = KEY_UNKNOWN
    0x700db = KEY_UNKNOWN
    0x700dc = KEY_UNKNOWN
    0x700dd = KEY_UNKNOWN
    0x700de = KEY_UNKNOWN
    0x700df = KEY_UNKNOWN
    0x700e1 = KEY_UNKNOWN
    0x700e4 = KEY_UNKNOWN
    0x700e5 = KEY_UNKNOWN
    0x700e6 = KEY_UNKNOWN
    0x700e7 = KEY_UNKNOWN
    0x700e8 = KEY_UNKNOWN
    0x700e9 = KEY_UNKNOWN
    0x700ea = KEY_UNKNOWN
    0x700eb = KEY_UNKNOWN
    0x700ec = KEY_UNKNOWN
    0x700ed = KEY_UNKNOWN
    0x700ee = KEY_UNKNOWN
    0x700ef = KEY_UNKNOWN
    0x700f0 = KEY_UNKNOWN
    0x700f1 = KEY_UNKNOWN
    0x700f2 = KEY_UNKNOWN
    0x700f3 = KEY_UNKNOWN
    0x700f4 = KEY_UNKNOWN
    0x700f5 = KEY_UNKNOWN
    0x700f6 = KEY_UNKNOWN
    0x700f7 = KEY_UNKNOWN
    0x700f8 = KEY_UNKNOWN
    0x700f9 = KEY_UNKNOWN
    0x700fa = KEY_UNKNOWN
    0x700fb = KEY_UNKNOWN
    0x700fc = KEY_UNKNOWN
    0x700fd = KEY_UNKNOWN
    0x700fe = KEY_UNKNOWN
    0x700ff = KEY_UNKNOWN
    0x90001 = 272  # BTN_LEFT
    0x90002 = 273  # BTN_RIGHT
    0x90003 = 274  # BTN_MIDDLE
    0x90004 = 275  # BTN_SIDE
    0x90005 = 276  # BTN_EXTRA
    

2本の指でスワイプするための適切なコードを取得できませんでしたが、これらのジェスチャーは実行できないため、ここでも気にしません。

PS他のジェスチャーをカスタマイズしたい場合は、次の手順で進めます。

  1. 私はマップエントリを並べ替え、重複をクリーンアップし、252のシンボル(および5つのボタン)で構成されていることに気付きました。

  2. 最初の10個のシンボルをKEY_Aに設定し、次の10個のシンボルをKEY_Bに設定し、最後の2個がKEY_Zになるまで続けます。次に、このマップをロードしました。

  3. テキストウィンドウでジェスチャーを実行し(または "xbindkeys -mk"を使用できます)、生成された文字をメモします。

  4. マップで、生成されないすべての文字をKEY_UNKNOWNに変更し、残りの3文字をKEY_A、KEY_B、KEY_C .. KEY_Z、KEY_1、..、KEY_4に変更してから、この新しいMAPをロードします。

  5. ジェスチャーをもう一度実行し、生成された文字/数字をメモします。これは、特定のキーの組み合わせを作成するために必要なものに定義できるコードです。


2

あなたinput-kbdinput-utilsパッケージから使用しようとすることができます:

$ apropos input-kbd
input-kbd (8)        - print or modify keyboard maps for input devices

入力デバイスインデックスを使用して(たとえば/dev/input/event4、でlsinput使用されるIDとは必ず異なる4のを見つけることができますxinput)、-fスイッチでファイルをフィードすることにより、キーボードマップを再構成できます。

$ sudo input-kbd -f some-file 4

ここで、some-fileはの形式をとりますscancode = keycode|keyname。ここで、以下は同等です。

0x0001 = KEY_F9
0x0001 = 67

現在のマップはで見つけることができますsudo input-kbd 4。からファイルを開く/dev必要があるため、イベントを読み取るにはスーパーユーザーを使用する必要があります。

また、誤解を招くような名前であるにもかかわらず、マウスでも機能することに注意してください。


あなたは正しいメカニズムにいるかもしれませんが、残念ながらkeymapを見ると、特にそれらのキー名の一部が完全に未定義であることを考えると、どのスキャンコードを変更するべきか明確ではありません。おそらく、キーネームの定義を見つけるメカニズムを見つけることができれば、それは役に立ちます。近づくための+1。
wxl 2015年

すべてのKEY_ *を0またはKEY_UNKNOWN値の1つ(たとえば240)にマップするとどうなりますか?それとも、保持したいジェスチャーの一部が無効になりますか?新しいマップを生成するには、現在のマップをにパイプしますawk '/KEY_/ { $3 = 240 } { print }'
elmicha 2015年

問題は、の定義をどこで見つけることができるKEY_UNKNOWNか、それについてはBTN_EXTRAどうでしょうか?
wxl 2015年

を使用sudo input-events 4して、どのマウスボタンがどれであるかを確認できます。KEY_UNKNOWNは(うまくいけば)印刷もアクションもトリガーしません。
elmicha 2015年

1
キー名の定義は/usr/include/linux/input.hにあります。これは、名前がUSB HUT 1.12をモデルにしており、キーコード232-65535が「予約済み」であることを示しています。input-kbdname.shthereを使用してキー名->コードマッピングを逆にし、input_kbdがキーコードの名前を出力できるようにします。
elmicha 2015年

2

ジェスチャーを無効にするには、evdevドライバーでボタンのマッピングを変更して、最後の6つの「ボタン」がすべて無効になるようにします。

  1. あなたが持っているものに/usr/share/X11/xorg.conf.d/10-evdev.confまたは/etc/X11/xorg.conf.d/10-evdev.conf依存するものに以下を追加する:

    # custom for Logitech Ultrathin Touch mouse
    
    Section "InputDevice"
        Identifier "Logitech bluetooth Touch Mouse"
        Driver "evdev"
        Option "Name"   "Ultrathin Touch Mouse"
        Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
    EndSection
    
    Section "InputClass"
        Identifier  "Ultrathin Touch Mouse"
        Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
    EndSection
  2. Xサーバーの再起動sudo service lightdm restart

  3. 確認する xinput --get-button-map "Ultrathin Touch Mouse"

あなたは、の値を変更することができますInputDevice Identifierしたい場合は、それがために価値を維持することが重要だInputDevice NameInputClass Identifier、これはどのようにあるので、「超薄型タッチマウス」としてxinputそれを認識しています。

Macバージョン、T631でテスト済み。

についてもう少し情報が必要な場合は、Joe Shawによるevdevこのブログ投稿が、入力スタック全体にどのように適合するかについて特に洞察を得ています。


これは潜在的に良い解決策です。ただし、X構成ファイル、特にグローバルに定義されたファイルを使用するのは嫌です。特定のアップグレードパスはこれらを上書きするため、理想的ではありません。さらに、キーの再マッピング方法が明確でないため、これは理想的ではありません。私はそれが有効な解決策ではないと言っていませんが、賞金に関しては他の答えが勝つかもしれません。☺最後に、これは再起動なしに実装できないのは残念です。evdev直接対処する方法を考え出せたらいいかもしれませんが、そのようなことは見つけられませんでした。
wxl 2015年

よろしくお願いします。とにかく、私は報奨金を得るために投稿しませんでした。同様の問題を抱えている人たちを助けるためです。ソリューションに対する制約が少ない場合は、あなたにとって、それは彼らにとって役立つはずです。つまり、Xを再起動したい場合は、再起動せずに同じ結果を得ることができると確信しています。少し面倒です。しかし、アップグレードについて聞いた。アップデート中に物を壊さないように、私は非常に注意しなければなりません。
steev

1
敬意を表して、私は同意しますが、私の望みは常に自分だけではなく、もっと手助けすることです。そうは言っても、私はあなたの答えに感謝します、それが私が+1した理由です!
wxl 2015年

まあ、あなたが実際に機能しているのでおめでとう;)
wxl

1
Omg、私は間違っていました。動作しているように見えましたが、実際にでテストできませんでしたevemu-record。動作しません:(
wxl

1

xbindkeysを使用して、「左端スワイプ」と「右端スワイプ」のジェスチャーをなんとか構成できました。これはおそらく2本の指でのスワイプにも当てはまる可能性がありますが、とにかく実行するのが難しいと感じたので、気にしませんでした。

これは私の.xbindkeysrcです

    #Right edge swipe (Send Alt+F2)
    "xte 'keydown Alt_L' 'key F2' 'keyup Alt_L'"
     Alt+Mod4+XF86TouchpadOff
    #Left edge swipe (Send CTRL+F8)
    "xte 'keydown Control_L' 'key F8' 'keyup Control_L'"
     Control+Mod4 + Tab

それらを便利なKDEショートカットにマップしましたが、もちろん他のこともできます。ログイン時にxbindkeysを実行する必要があります。xbindkeysチュートリアルで説明されているように、.desktopファイルを作成しました。

    #./.config/autostart/xbindkeys.desktop
    [Desktop Entry]
    Comment[en_GB]=
    Comment=
    Exec=xbindkeys
    GenericName[en_GB]=
    GenericName=
    Icon=system-run
    MimeType=
    Name[en_GB]=
    Name=
    Path=
    StartupNotify=true
    Terminal=false
    TerminalOptions=
    Type=Application
    X-DBUS-ServiceName=
    X-DBUS-StartupType=
    X-KDE-SubstituteUID=false
    X-KDE-Username=

HTH


1

実際にX入力コードを書いている人から提供されたソリューションを含め、提供されたすべてのソリューションにもかかわらず、それを機能させることができなかったので、私はこのことに不満を感じました。とは言え、私はそれから離れて、通常のコード付きマウスを使用しました。

昨日私はウルトラスリムを見つけ、それをもう一度試してみることにしました。それはJust Works™です。これは少なくとも、この質問の理由は、これらのジェスチャーが奇妙な方法で解釈され、私のワークフローをいじっていたということです。左端のスワイプで、Firefoxで最後に使用したタブを切り替えることができることを除いて、今は実際には効果がないようです。

奇妙なことに、ジェスチャーが実際に無効にされることは決してありません。13個の「ボタン」はすべてによって返されxinput --get-button-map "Ultrathin Touch Mouse"ます。また、grep Ultrathin /usr/share/X11/xorg.conf.d何も返しません。該当ありませんNoSymbolS(なしVoidSymbolで見つかったすべてのS)xkbcompも任意の関連KEY_UNKNOWNを持つsがinput-kbd

一方、evemu-recordダブルタップジェスチャが単なるBTN_LEFTイベントとして扱われることを除いて、すべてが同じように見えます。

とはいえ、これに関連して何かが変わったが、私は何がわからない。

また、再マッピングについてはテストしていませんが、元の質問の範囲には含まれていませんでした。


0

私はすべての答えを読み、input-kbd(input-utilsの一部)の周りにこの問題を自動修正するスクリプトを書きました。

ログインするたびに、このリポジトリからfixMouseを実行する必要があります。そうなる:

  1. このマウスのdbusを聞く
  2. すべてのキーストロークをKEY_UNKNOWNに設定します

標準のマウス機能(左ボタン、スクロールなど)は引き続き正常に機能します。奇妙なキーボードのキーだけが停止します。

サスペンド、Bluetoothスリープ、マウスのオン/オフなどに耐えます。

わたしにはできる。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.