Как я могу сделать свои Супер ключи (Windows Key), ведут себя больше как Ctrl/Alt/Shift в Linux

После использования Ctrl + "клавиши со стрелками" в течение 13 лет для переключения виртуальных рабочих столов в X-окна я был убежден недавно измениться на использование Супер ключей вместо этого (ключ окон и ключ контекстного меню, который я повторно отобразил). Это все хорошо работает по большей части. Однако что-то все еще берет ключевые события, которые отправляют эти ключи, как будто они - нормальное алфавитно-цифровое как ключ.

Например, я сначала заметил это в электронной таблице Google Docs что, если я нажимаю одну только клавишу окон по вершине ячейки, что она начинает редактировать ту ячейку. Это ничего не вставляет, это просто отправляет ключевое событие, которое Firefox видит и начинает редактировать ячейку. Это вызвало проблемы на совместном документе, я продолжал работать как путь работы документов Google, он привел ко мне случайно стирание данных в нескольких полях, прежде чем я понял то, что продолжалось.

Мне нравится использовать супер ключи, но я хочу, чтобы они вели себя больше как Ctrl, или клавиша Alt делает, в котором это - модифицирующая клавиша и ничего не отправляет, пока вторая клавиша не нажата.

Моя установка следующая:

  • Ubuntu 10.10
  • XFCE 4
  • Клавиатура Microsoft Natural Ergo 4000 (с логотипом, поцарапанным из курса)
  • Следующее является моим.Xmodmap файлом:

удалите Блокировку = Caps_Lock

код клавиши 66 = Escape

! ниже карт мой другой ключ контекстного меню окон.

код клавиши 135 = Super_R

Править: Согласно просьбе вот соответствующий вывод от xev для нажатия клавиши и keyrelease моего Super_L (оставлен ключ окон)

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
7
задан 24.02.2011, 06:39

1 ответ

Не XFCE-связанный материал

Это не будет точно решением Вашей проблемы, извините для этого, но все еще должно быть полезно для кого-то, по крайней мере. В Gnome это было зафиксировано в недавнем Ubuntus. Им я означаю рассматривать Win не как модифицирующую клавишу. В былые времена, например, в Ubuntu 9.04, необходимо было сделать следующее изменение:

Перейдите в System -> Preferences -> Keyboard, под Layouts щелчок вкладки Layout options... кнопка и в Alt/Win key behavior список выбирает Meta is mapped to Win keys (или Meta is mapped to Left Win) вместо Default.

Что это действительно делает? Изменения altwin опция в $HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml файл (или создает его, если это не существует):

<?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>

Если Вы выбрали Left Win, затем там будет следовать за строковым значением:

altwin     altwin:left_meta_win

В Ubuntu 10.10 это не нужно как Default по-видимому, изменился.

Но у Вас есть XFCE, не Gnome, таким образом, это скорее не поможет Вам.

XFCE-связанный материал

Я загрузил Xubuntu (9.10), играл с ним немного и наконец нашел решение.

Во-первых, тем не менее, я должен сказать, что настройки клавиатуры действительно завинчены в XFCE. В Settings -> Keyboard под Layout вкладка у Вас нет слишком многих опций. Вы не можете измениться XkbOptions там и даже если Вы делаете это вручную в ~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml, это будет перезаписано. Таким образом, я изменился /etc/default/console-setup путем добавления altwin:meta_win кому: XKBOPTIONS (используйте запятую в качестве разделителя, если уже существует некоторая другая опция (опции)). Однако, никакая удача.

tl; доктор

Каково решение?

Не заботьтесь о способе XFCE обработать клавиатуру, потому что это, по-видимому, повреждается. Использовать setxkbmap непосредственно:

setxkbmap -option altwin:meta_win

(или left_meta_win, независимо от того, что Вы предпочитаете),

Теперь необходимо проверить, что это действительно решило проблему.:)

Как применить его постоянно?

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

Это может быть также сделано для всех пользователей путем записи в /etc/X11/Xkbmap вместо этого.

Как я могу быстро проверить если altwin:meta_win или altwin:left_meta_win был применен?

setxkbmap -print

Строка с xkb_symbols должен иметь что-то как altwin(meta_win).

9
ответ дан 07.12.2019, 14:53

Теги

Похожие вопросы