Làm cách nào tôi có thể làm cho các phím Super (Windows Key) của mình hoạt động giống như Ctrl / Alt / Shift trong Linux


7

Sau khi sử dụng Ctrl+ "phím mũi tên" trong 13 năm để chuyển đổi máy tính để bàn ảo trong cửa sổ X, gần đây tôi đã bị thuyết phục thay đổi sang sử dụng phím Super (phím windows và phím menu ngữ cảnh mà tôi đã ánh xạ lại). Tất cả điều này hoạt động tốt cho hầu hết các phần. Tuy nhiên, một cái gì đó vẫn đang chọn các sự kiện quan trọng mà các khóa này đang gửi như thể chúng là một khóa như chữ và số bình thường.

Ví dụ: lần đầu tiên tôi nhận thấy điều này trong bảng tính Google Docs rằng nếu tôi nhấn phím windows một mình trên đầu một ô, thì nó sẽ bắt đầu chỉnh sửa ô đó. Nó không chèn bất cứ thứ gì, nó chỉ gửi một sự kiện quan trọng mà Firefox nhìn thấy và bắt đầu chỉnh sửa ô. Điều này gây ra sự cố trên một tài liệu hợp tác mà tôi đang thực hiện khi cách tài liệu của Google hoạt động, dẫn đến việc tôi vô tình xóa dữ liệu trong một vài trường trước khi tôi nhận ra điều gì đang xảy ra.

Tôi thích sử dụng các siêu khóa, nhưng tôi muốn chúng hoạt động giống như một phím Ctrlhoặc Alttrong đó là khóa bổ trợ và không gửi bất cứ thứ gì cho đến khi nhấn phím thứ hai.

Thiết lập của tôi là như sau:

  • Ubuntu 10.10
  • XFCE 4
  • Bàn phím Microsoft Natural Ergo 4000 (dĩ nhiên là bị trầy xước logo)
  • Sau đây là tệp .Xmodmap của tôi:

xóa Khóa = Caps_Lock

mã khóa 66 = Thoát

! Dưới đây ánh xạ phím menu ngữ cảnh cửa sổ khác của tôi.

mã khóa 135 = Super_R

Chỉnh sửa: Theo yêu cầu, đây là đầu ra có liên quan từ xev cho một lần nhấn phím và phát hành phím Super_L của tôi (phím cửa sổ bên trái)

KeyPress event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849342, (177,174), root:(182,228),
    state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849430, (177,174), root:(182,228),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

1
Chạy xevvà đăng các dòng được tạo ra khi bạn nhấn phím Win.
Juliano

@Juliano: Đăng trong câu hỏi của tôi theo yêu cầu. Tôi đã xem xét kết quả này trước đây và không thể tìm thấy bất cứ điều gì hữu ích cho vấn đề của tôi, nhưng điều đó không có nghĩa là bạn hoặc người khác sẽ không.
deltaray

Từ đầu ra xev của bạn, không có gì được tạo ra khi nhấn phím Win. Vì vậy, nó là một bí ẩn đối với tôi tại sao Firefox lại diễn giải nó như là đầu vào.
Juliano

Câu trả lời:


9

Những thứ không liên quan đến XFCE

Nó sẽ không chính xác là một câu trả lời cho vấn đề của bạn, xin lỗi vì điều đó, nhưng ít nhất vẫn hữu ích cho ai đó. Trong Gnome, nó đã được sửa trong Ubuntus gần đây. Ý tôi là nó Winkhông được coi là khóa bổ trợ. Vào thời xưa, ví dụ như trong Ubuntu 9.04, bạn phải thực hiện thay đổi sau:

Đi đến System -> Preferences -> Keyboard, dưới nút Layoutsbấm vào tab Layout options...và trong Alt/Win key behaviordanh sách chọn Meta is mapped to Win keys(hoặc Meta is mapped to Left Win) thay vì Default.

Nó thực sự làm gì? altwinTùy chọn thay đổi trong $HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xmltệp (hoặc tạo tùy chọn nếu nó không tồn tại):

<?xml version="1.0"?>
<gconf>
        <entry name="options" mtime="1298496603" type="list" ltype="string">
                <li type="string">
                        <stringvalue>altwin     altwin:meta_win</stringvalue>
                </li>
        </entry>
</gconf>

Nếu bạn đã chọn Left Win, thì sẽ có giá trị chuỗi sau:

altwin     altwin:left_meta_win

Trong Ubuntu 10.10, nó không cần thiết vì Defaultrõ ràng đã thay đổi.

Nhưng bạn có XFCE, không phải Gnome, vì vậy điều này sẽ không giúp bạn.

Những thứ liên quan đến XFCE

Tôi đã tải xuống Xubfox (9.10), chơi với nó một chút và cuối cùng tìm thấy giải pháp.

Tuy nhiên, trước tiên, tôi phải nói rằng các cài đặt bàn phím thực sự bị vặn trong XFCE. Trong tab Settings -> Keyboarddưới Layoutbạn không có quá nhiều lựa chọn. Bạn không thể thay đổi XkbOptionsở đó và ngay cả khi bạn thực hiện thủ công ~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml, nó sẽ bị ghi đè. Vì vậy, tôi đã thay đổi /etc/default/console-setupbằng cách thêm altwin:meta_winvào XKBOPTIONS(sử dụng dấu phẩy làm dấu phân cách nếu đã có một số tùy chọn khác). Tuy nhiên, không có may mắn.

tl; dr

Giải pháp là gì?

Đừng quan tâm đến cách xử lý bàn phím XFCE, vì dường như nó bị hỏng. Sử dụng setxkbmaptrực tiếp:

setxkbmap -option altwin:meta_win

(hoặc left_meta_win, bất cứ điều gì bạn thích)

Bây giờ bạn phải kiểm tra xem nó thực sự giải quyết vấn đề của bạn. :)

Làm thế nào để áp dụng nó vĩnh viễn?

echo -option altwin:meta_win >>~/.Xkbmap

Nó cũng có thể được thực hiện cho tất cả người dùng bằng cách viết vào /etc/X11/Xkbmapthay thế.

Làm thế nào tôi có thể nhanh chóng kiểm tra nếu altwin:meta_winhoặc altwin:left_meta_winđã được áp dụng?

setxkbmap -print

Dòng với xkb_symbolsnên có một cái gì đó như altwin(meta_win).


Tôi đã thêm giải pháp thực sự trong câu trả lời của mình. Làm ơn hãy kiểm tra nó.
przemoc

Có, lệnh setxkbmap -option altwin: meta_win đã hoạt động. Cảm ơn bạn rất nhiều vì đã làm việc thông qua một giải pháp. Hy vọng rằng điều này sẽ giúp ích cho những người khác, tôi sẽ đăng nó lên @climagic vào ngày mai vì chính những người ở đó đã khuyến khích tôi sử dụng phím windows ngay từ đầu.
deltaray

@deltaray: Bạn cũng cần nhấp vào nút Bounty. Tiền thưởng không được trao tự động.
harrymc

Cảm ơn @harrymc tôi đã không nhận ra điều đó. Tôi bấm vào nó.
deltaray
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.