Làm cách nào để ánh xạ lại nút tìm kiếm trên Logitech MX400 của tôi?


10

Tôi có một logitech MX400 không dây. Nó có một nút tìm kiếm mà tôi muốn sử dụng để dán (thay vì nút cuộn cực kỳ nhạy nhưng khó bấm). Tôi đã ánh xạ lại các nút khác bằng xbindkey và sử dụng xev để tìm mã nhấn nút, nhưng điều này không hoạt động đối với nút tìm kiếm. sử dụng xev và nhấp vào nút tìm kiếm Tôi nhận được các sự kiện sau

FocusOut event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  4294967275 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
    atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue

Không có sự kiện NútPress. Có vẻ như nút tìm kiếm bị chặn ở mức dưới các sự kiện X. Có ý kiến ​​gì không? Tôi có Ubuntu 12.04. Ubuntu thực sự nhìn thấy nhấp chuột và sinh ra một hộp thoại tìm kiếm, nhưng không có dấu vết của một sự kiện nhấp chuột trong xev.

Biên tập

Tôi đã kiểm tra phương thức được cung cấp với xmodmap. .XmodmapBây giờ của tôi chứa dòng sau

keycode 225 = XF86Paste NoSymbol XF86Paste``

chạy xmodmap ~/.Xmodmapngay bây giờ sẽ vô hiệu hóa nút này (hoặc ít nhất, tôi không nhận được bất kỳ kết quả nào bằng cách nhấn nó). Tôi đã thử xmodmap -pkevà nó in ra:

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

Lạ lắm rồi. Tất cả các mục khác được định dạng tương tự. Tôi gần với giải pháp, nhưng vẫn còn một điều kỳ lạ.

Chỉnh sửa 2

Tôi đã cố chạy xinput (chưa bao giờ nghe lệnh này. Công cụ tuyệt vời). Có hai mục cho Logitech. Đây là đầu ra của việc liệt kê từng người trong số họ (id 9 và 10)

Logitech USB Receiver                       id=9    [slave  pointer  (2)]
    Reporting 7 classes:
        Class originated from: 9. Type: XIButtonClass
        Buttons supported: 24
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
        Button state:
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 3
          type: 1 (vertical)
          increment: -1.000000
          flags: 0x2 ( preferred )


Logitech USB Receiver                       id=10   [slave  pointer  (2)]
    Reporting 6 classes:
        Class originated from: 10. Type: XIButtonClass
        Buttons supported: 7
        Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
        Button state:
        Class originated from: 10. Type: XIKeyClass
        Keycodes supported: 248
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0

Thiết bị kiểm tra 9 không làm gì với nút. Thiết bị kiểm tra 10 thay vào đó hoạt động và đây là đầu ra khi tôi nhấp

$ xinput test 10
key press   225 
key release 225 
key press   225 
key release 225 
key press   225 
key release 225

Vì vậy, có vẻ như chuột hoạt động như một bàn phím trong vấn đề này, nhưng vì một số lý do, xmodmap không làm gì khi nhận được khóa 225.

** Biên tập **

Tôi có thể xác nhận rằng thêm keycode 225 = abản in amỗi lần tôi nhấp vào nút. Vì vậy, vấn đề dường như có liên quan đến cách XF86Paste thực sự được xử lý. Tôi đang gửi nó, nhưng nó không dán.


Bạn đã xbindkeysthiết lập để chạy khi bạn khởi động phải không? Bạn có thể vô hiệu hóa nó và thử lại?
Seth

@iSeth: giết xbindkey. Đã thử lại, kết quả tương tự.
Stefano Borini

Mở một thiết bị đầu cuối và chạy tail -f /var/log/dmesgsau đó thử nhấn nút. Bạn có nhận được bất kỳ đầu ra liên quan đến các phím / nút?
Seth

1
Trước khi đăng một câu trả lời vô nghĩa khác ... hãy tìm id đầu vào của chuột xinput listsau đó tìm mã nút của khóa tìm kiếm của bạn với xinput test <MOUSE ID>. Nó có hoạt động không?
mrcktz

1
Dường như có một lỗi được xác nhận cho phép xevhiển thị các sự kiện XF86Paste / XF86Copy, nhưng không có gì xảy ra. Điều đó có nghĩa là bạn phải sử dụng tổ hợp phím CTRL + v để dán. Xmodmap ánh xạ các nút 1: 1, nhưng bạn có thể sử dụng cài đặt phím tắt để kích hoạt thực thi lệnh khi nhấn phím (xem câu trả lời của tôi).
mrcktz

Câu trả lời:


3

Để mô phỏng các sự kiện bàn phím, tôi gợi ý cho bạn công cụ tuyệt vời xdotoolCài đặt xdotool .

1. Cài đặtxdotool qua thiết bị đầu cuối ( CTRL+ ALT+ T):

sudo apt-get install xdotool

hoặc sử dụng Trung tâm phần mềmCài đặt xdotool .

2. Tạo một tập lệnh sử dụng xdotool để mô phỏng các sự kiện chính của CTRLv. Trong thiết bị đầu cuối:

mkdir -p ~/bin  
gedit ~/bin/fakepaste

Sao chép nội dung sau vào cửa sổ soạn thảo đã mở ra. Sau khi sao chép mã lưu, sau đó đóng nó:

#!/bin/sh
exec /usr/bin/xdotool key CTRL+V  
EOF

Bây giờ làm cho tập lệnh thực thi:

chmod +x ~/bin/fakepaste

3. Đăng xuất và đăng nhập để tải lại PATH của bạn .

4. Tạo lối tắt tùy chỉnh

Đi đến System Settings, rồi đi Keyboard, rồi Shortcuts.

Nhấn +nút ở dưới cùng của hộp thoại. Cung cấp tên cho lối tắt bạn sắp tạo và cho lệnh điền vào : fakepaste. Nhấn OK.

Bên cạnh lối tắt mới của bạn, bạn sẽ thấy disabled. Bấm vào văn bản đó và sau đó nhấn phím bạn muốn được gán cho mô phỏng bàn phím của bạn.

Bây giờ bạn có thể sử dụng khóa tìm kiếm của mình để dán!


1
Tôi không thấy làm thế nào điều này sẽ giúp trên một nút chuột, nó thay đổi các phím tắt.
Seth

2
@iSeth: Vấn đề là hóa ra chuột logitech vừa là bàn phím vừa là chuột. Đó là một con chuột cho tất cả mọi thứ ngoại trừ nút tìm kiếm, nơi nó hoạt động giống như một bàn phím
Stefano Borini

2

giải pháp xbindkeys với xdotool

Đối với giải pháp này, bạn sẽ cần xbindkeysxdotool

Giết xbindkeys và đổ cấu hình nút của bạn

killall xbindkeys

xbindkeys --defaults >> ~/.xbindkeysrc

Thêm các ràng buộc mới của bạn

Bây giờ bạn có thể sửa đổi tệp này để thêm các ràng buộc tùy chỉnh, chúng có dạng

"<command>"
  <key combination>

vì vậy nếu bạn thêm

"gedit"
  m:0x0 +b:4

bạn sẽ mở geditmỗi khi bạn cuộn lên.

Vì vậy, bây giờ bạn có thể thử một trong những điều sau đây, chọn một trong những phù hợp nhất với bạn. Trong mọi trường hợp xdotool click 2sẽ được mô phỏng, đây là nhấn nút chuột giữa và điều này sẽ dán cả thiết bị đầu cuối trong và ngoài.

  1. chặn 225 từ chuột của bạn :

    "xdotool click 2"
      m:0x0 +b:225
    
  2. đánh chặn mã khóa 225 nói chung :

    "xdotool click 2"
      c:225
    
  3. thay thế tất cả các XF86Searchsự kiện (hoàn nguyên cài đặt chuột của bạn về cài đặt gốc trước để bạn lấy XF86Searchlại):

    "xdotool click 2"
      XF86Search
    

Bắt đầu xbindkey và kiểm tra

Chạy

xbindkeys

và xem nếu nó hoạt động.


Tôi muốn cho bạn biết rằng tôi nghĩ cả hai bạn đều xứng đáng nhận được tiền thưởng vì bạn đã giúp tôi rất nhiều. Tôi vẫn không biết liệu các giải pháp của bạn có hiệu quả không, tôi sẽ kiểm tra chúng vào ngày mai, nhưng tiền thưởng đã hết hạn và tôi không muốn nó bị lãng phí. Ngay khi tôi có đủ điểm, tôi sẽ cấp cho bạn tiền thưởng tương tự. Cảm ơn
Stefano Borini

Oke, cảm ơn (mặc dù tôi không biết nếu điều đó là có thể). Rất vui khi được giúp đỡ;)
Gerhard Burger

uhm ... bạn nói đúng Tôi chỉ có thể trao một ở đây. Đừng lo lắng, ngay khi tôi có đủ đại diện, tôi sẽ cấp cho một trong những câu trả lời khác của bạn.
Stefano Borini

Không, không, đừng bận tâm. Tôi khá ổn;)
Gerhard Burger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.