7

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

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

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

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

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

удалить блокировку = Caps_Lock

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

! Ниже приведены другие ключи контекстного меню других окон.

код ключа 135 = Super_R

Изменить: В соответствии с просьбой, вот соответствующие выходные данные из xev для нажатия клавиши и освобождения клавиши моего Super_L (левая клавиша Windows)

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 ответ1

9

Не связанные с 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 (используйте запятую в качестве разделителя, если уже есть какие-то другие опции). Тем не менее, не повезло.

ТЛ; др

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

Не обращайте внимания на способ обращения с клавиатурой 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) .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .