Các phím chức năng Remap của Bàn phím di động Microsoft Sculpt trong Linux


0

Tình hình

Tôi có Bàn phím di động Microsoft Sculpt, được kết nối qua Bluetooth. Trên máy tính xách tay của tôi, một xUb Ubuntu 16.04 đang chạy.

Các F1 đến F12 Các phím của Bàn phím di động Sculpt hoạt động như các phím chức năng Tạm dừng chơi , Tắt tiếng , ... Để sử dụng F1 đến F12 Phím như dự định, người ta cần nhấn Fn Phím, bên phải. Điều này khá khó chịu nếu bạn muốn nhấn ALT + F4 ... Tôi muốn chuyển vĩnh viễn sang Fx các phím (hoặc khóa Fn Chìa khóa). Ngoài ra, tôi muốn chuyển đổi Trang lên Trang dươi chìa khóa chống lại Nhà Kết thúc .

Giải pháp Windows

Sử dụng AutoHotKey như được mô tả trong

Giải pháp không hoạt động

Câu trả lời áp dụng cho bàn phím khác

Giải pháp Linux cho các Bàn phím khác (không hoạt động)

Có thể thay đổi hoặc chuyển đổi các phím bằng các công cụ dòng lệnh xkbcomp hoặc là setxkbmap như được mô tả ở đây:

Dựa trên những câu hỏi và câu trả lời này, tôi đã sử dụng xev để tìm tên khóa (mã định danh XKB) của các khóa được đề cập. Tôi muốn tạo ánh xạ sau:

# F1 to F5 (F5 probably does not work)
I172 -> FK01
MUTE -> FK02
VOL- -> FK03
VOL+ -> FK04
FIND -> FK05

# F11 and F12
FK22 -> FK11
FK23 -> FK12

# switch Page Up and Page Down with Home and End
PGUP -> HOME
HOME -> PGUP
PGDN -> END
END  -> PGDN

Vì vậy, tôi đã tạo mã thích hợp:

xkb_symbols "remote" {
    key <I172> {
            type= "CTRL+ALT",
            symbols[Group1]= [              F1,              F1,              F1,              F1, XF86Switch_VT_1 ]
    };
    key <MUTE> {
            type= "CTRL+ALT",
            symbols[Group1]= [              F2,              F2,              F2,              F2, XF86Switch_VT_2 ]
    };
    key <VOL-> {
            type= "CTRL+ALT",
            symbols[Group1]= [              F3,              F3,              F3,              F3, XF86Switch_VT_3 ]
    };
    key <VOL+> {
            type= "CTRL+ALT",
            symbols[Group1]= [              F4,              F4,              F4,              F4, XF86Switch_VT_4 ]
    };
    key <FIND> {
            type= "CTRL+ALT",
            symbols[Group1]= [              F5,              F5,              F5,              F5, XF86Switch_VT_5 ]
    };
    key <FK22> {
            type= "CTRL+ALT",
            symbols[Group1]= [             F11,             F11,             F11,             F11, XF86Switch_VT_11 ]
    };
    key <FK23> {
            type= "CTRL+ALT",
            symbols[Group1]= [             F12,             F12,             F12,             F12, XF86Switch_VT_12 ]
    };
    key <PGDN> { [ End ] };
    key <END> { [ Next ] };
    key <PGUP> { [ Home ] };
    key <HOME> { [ Prior ] };
};

Và thêm nó vào định nghĩa bản đồ khóa hiện có với xkbcomp và thêm +custom(remote) để xkb_symbols biến của ánh xạ chính của thiết bị tương ứng. Nó không hoạt động.

Tôi nghĩ rằng chúng có thể không hoạt động vì bàn phím được nhận dạng là con trỏ và không phải là bàn phím. Các xinput list đầu ra nói:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Mouse                        id=11   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad          id=14   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint Stick             id=15   [slave  pointer  (2)]
⎜   ↳ Microsoft Sculpt Mobile Keyboard          id=17   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_E4HD             id=12   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=16   [slave  keyboard (3)]

Giải pháp thay thế (chưa thử)

Tôi đọc về một số con chuột được công nhận là bàn phím và không phải là con trỏ. Sửa đổi mã Linux Kernel + biên dịch lại nó là một trong những giải pháp. Tôi không muốn biên dịch lại Kernel chỉ để bàn phím của tôi hoạt động tốt ....

Giải pháp phần cứng (làm việc)

enter image description here

Câu hỏi

  • Giả định của tôi trong "Giải pháp Linux cho các Bàn phím khác" có sai không?
  • Nếu câu trả lời cho câu hỏi đầu tiên là Không : Làm cách nào để giải quyết vấn đề được mô tả dựa trên phần mềm (chuyển đổi và thay thế khóa) mà không biên dịch lại Hạt nhân của tôi?

Áp dụng ngẫu nhiên các giải pháp khác mà không hiểu các chi tiết hiếm khi hoạt động. Bước đầu tiên là thực sự tìm ra những sự kiện nào được tạo ra cho F1-F12, cả có và không có phím Fn. Sử dụng evtest trên lớp đầu vào kernel và xev trên lớp X cho điều đó và chỉnh sửa câu hỏi cho phù hợp. Sau Điều này được biết, người ta có thể đưa ra ánh xạ khóa chính xác (và bạn cũng có thể tự làm điều này, googling cho hướng dẫn / giải thích) Biên dịch lại kernel không bao giờ cần cho ánh xạ bàn phím.
dirkt

@dirkt Cảm ơn bạn đã bình luận. Tôi đã chỉnh sửa câu hỏi và thêm ánh xạ khóa đã sửa đổi, mà tôi đã thử ngày hôm qua. Tôi cũng trích xuất ánh xạ khóa hiện tại với xkbcomp -xkb $DISPLAY my_xkbmap, sửa đổi thủ công và tải ánh xạ đã sửa đổi bằng xkbcomp (tôi quên lệnh). Ánh xạ khóa mới không hoạt động. Tuy nhiên, trích xuất ánh xạ khóa một lần nữa với xkbcomp trả lại cho tôi ánh xạ sửa đổi mới (do đó, ánh xạ khóa mới đã được lưu nhưng không hoạt động vì một số lý do). Vì bàn phím của tôi được nhận dạng là con trỏ và không phải là bàn phím, nên tôi nghĩ rằng nó chỉ có thể hoạt động cho bàn phím
daniel.neumann

Tôi sẽ thử evtest sau này.
daniel.neumann

Ngay cả khi bàn phím của bạn được phân loại là con trỏ theo mặc định, nó vẫn có thể tạo các sự kiện chính, vì vậy đây không phải là vấn đề. Chắc chắn cũng nhìn vào evtest và lớp đầu vào, bởi vì quyết định đầu tiên được đưa ra là liệu nên sử dụng lớp đầu vào hay lớp X để thay đổi ánh xạ.
dirkt

@dirkt evtest mang lại kết quả tương tự như xev. Phím chức năng tại 'F1' là 'Phát / Tạm dừng', 'F2' là 'Tắt tiếng', v.v. Các phím chức năng tại 'F5' đến 'F12' kết hợp phím (ví dụ: nhấn 'F10' sẽ tạo ra các sự kiện 'CTRL_L + Windows_L + Tab ') - xevevtest là phù hợp trong trường hợp này.
daniel.neumann
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.