Các phím ánh xạ tạo ra nhiều mã quét


33

Tôi có một chiếc ThinkPad W540. Trên bàn phím của nó có bốn phím đa phương tiện phía trên bàn phím số. Hai trong số các khóa đó tạo ra mã khóa (và, rõ ràng là scancodes) tương ứng với sự kết hợp của các phím, Win_L+ LWin_L+ E. Nói cách khác, đối với khóa tạo Win_L+ L,
showkey --scancodestrả về giá trị này:

0xe0 0x5b 0x26 0xa6 0xe0 0xdb

Các setkeycodeslệnh đòi hỏi unescaped byte hoặc đơn lẻ hoặc thoát khỏi chuỗi hai byte để biểu thị mã quét, và showkeymang lại cho tôi cách hơn thế nữa, vì vậy tôi có thể không hoàn toàn tái lập bản đồ rằng chìa khóa để một trong những mã phím miễn phí trong hệ thống của tôi với một đơn giản setkeycodes <scancode> <keycode>.

Tôi thực sự sẽ đánh giá cao bất kỳ gợi ý nào về cách tôi có thể ánh xạ lại phím đó sang một thứ khác không chỉ đơn giản là sao chép một trong các tổ hợp phím hiện có trên bàn phím của tôi.


1
Bạn có thể muốn xem cái này: Các phím tắt độc lập với bố cục bàn phím
terdon

1
Tôi nghĩ rằng điều này có thể khó khăn: ít nhất là trên các Thinkpad cũ, loại ánh xạ này được thực hiện bởi bộ điều khiển trên bo mạch chứ không phải HĐH.
mirabilos

1
Tôi có Bàn phím đa phương tiện của Microsoft có cùng một vấn đề, bạn có thể tìm ra giải pháp không?
osolmaz

5
Tôi đã làm một cái gì đó tương tự trên Thinkpad t61 một lúc trước bằng cách ánh xạ các phím sử dụng /etc/acpi/events trong acpidgói và chỉ xác định một hành động khi nhấn các phím chức năng đó.
mổ lấy thai

2
Bạn có thiết lập Win_L làm công cụ sửa đổi trong X-windows không? Nó mặc định cho tôi.
mcr

Câu trả lời:


1

Bạn có thể làm điều này trong hai bước:

  1. để bắt các tổ hợp phím
  2. để mô phỏng gõ các phím khác nhau.

Bạn có thể sử dụng xchainkeyscho 1.[xdotool][2]cho 2 . :

Để tạo phím mới mô phỏng với xdotool, tùy chọn --clearmodifierscủa keycó thể quan trọng để trung hòa các gốc mô phỏng báo chí sửa đổi:

xdotool key --clearmodifiers Shift+a

Điều này nên gõ một vốn Anhư một bài kiểm tra.

Trong cấu hình của xchainkeysin ~/.config/xchainkeys/xchainkeys.conf, chúng ta có thể liên kết lệnh với tổ hợp phím:

W-l :exec xdotool key --clearmodifiers Shift+a

Bây giờ, tổ hợp khóa Winl( Wintrái hoặc phải làm tương tự), cũng như khóa tạo Win_L + L, sẽ tạo vốn A.

(Có nhiều chương trình khác có sẵn cho cả hai phần. Đầu tiên, người ta có thể sử dụng cấu hình phím nóng của môi trường máy tính để bàn, nhưng tôi thích giữ nó độc lập với DE.)


2
Vấn đề với giải pháp này, nếu tôi không nhầm, sẽ giống như sử dụng tổ hợp phím đã nói để kích hoạt một hành động - hành động đó sẽ không được kích hoạt chỉ bằng phím đó, nhấn tổ hợp phím thực sự tạo ra cùng một khóa mã cũng sẽ cho kết quả tương tự. Nói cách khác, nó không thỏa mãn điều kiện "ánh xạ lại khóa đó sang một thứ khác không đơn giản là sao chép một trong các điều kiện tổ hợp khóa hiện có". Nhưng tôi đánh giá cao nỗ lực.
moonwalker

3
Vâng, đó là sự thật - Tôi không chắc ý của bạn về câu đó, giờ tôi đã hiểu. Nhưng có vẻ như khóa của bạn tạo ra hai mã khóa trong phần cứng (nghĩa là trong phần sụn của bàn phím) - vì vậy tôi không thấy có chiến tranh nào, ngoại trừ việc bạn phát hiện thời gian của phím nhân tạo nhấn "sửa đổi xuống", "phím khác", "sửa đổi lên". Hmm ... có lẽ một giải pháp liên quan đến hàn đơn giản hơn;)
Volker Siegel

1
@moonwalker Bạn có thể thử ánh xạ lại Win_L thay vì phím khác không và kiểm tra xem nó có sửa lại bản sửa đổi của người khác không?
Volker Siegel

1
ừm, tôi sẽ không bị mất các kết hợp như Win_L + R, Win + Break, Win + L, Win + vv. trong trường hợp đó?
moonwalker

1
Không, tôi không nghĩ vậy. Win-L là Win-Shift-lNhưng bạn cũng có thể ánh xạ các chuỗi tổ hợp phím thành một lệnh. Thích Win-avà sau đó b. Với ra Win-a, bcư xử bình thường. Đó là tính năng hữu ích nhất xchainkeysvà khá độc đáo, tôi nghĩ vậy.
Volker Siegel

-2

Đây là những gì tôi đã làm trên Thinkpad Yoga của mình để khởi động lại dấu gạch chéo ngược / phím chính xác. Bởi vì vì một số lý do trong mọi Máy ảo Linux, nó đã hiểu khóa dấu gạch chéo ngược \ pipe (\ |) là khóa nhỏ hơn (<).

Đầu tiên thực hiện lệnh: xev

Bấm phím mong muốn để lấy mã khóa cho khóa bạn muốn rebind:

đầu ra sự kiện Keyevress xev

Trong ví dụ này, Keycode là 94 và hành động là "ít" nhưng chúng tôi muốn nó có hành động dấu gạch chéo ngược và thanh hay còn gọi là "pipe"

Ánh xạ lại mã khóa 94 vào dấu gạch chéo ngược và phím bar hay còn gọi là "pipe":

xmodmap -e 'keycode 94 = backslash bar'

Bây giờ hãy thực hiện điều này liên tục:

xmodmap -pke | egrep "backslash|bar" | grep 94 > ~/.Xmodmap`

Trả về các mục sau vào tệp ~/.Xmodmap:

keycode  94 = backslash bar backslash bar

Sau đó, bạn phải tạo tệp sau để hoàn thành việc lưu trữ liên tục:

echo "xmodmap .Xmodmap" > ~/.xinitrc

1
Backslash / pipe pipe tạo một mã quét duy nhất, chủ đề là về các phím ánh xạ lại tạo ra nhiều mã quét.
moonwalker
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.