Разница влево / вправо супер кнопку

10

Когда я нажимаю левую Superклавишу, появляется оболочка гнома, а когда я нажимаю правую Superклавишу, она не появляется. Кроме того, нажатие вправо Super+ Tдействительно открывает терминал сразу, но при использовании левого супер я должен нажать Tдважды, когда я нажимаю Tтолько один раз, это похоже на простое нажатие Tбез удержания Superлевой. Эта последняя точка также встречается с другими ярлыками, которые я определил (например, Super+ L, Super+ E), но не с Super+ Up/Down/Left/Right.

Что я хочу, так это нажать любую Superклавишу, чтобы получить оболочку gnome, и использовать любую Superклавишу в сочетании с, Tчтобы немедленно открыть терминал (и аналогично другим сочетаниям клавиш). Я использую Ubuntu 12.04 LTS и оболочку gnome 3.

Erik
источник
В Settings Manager -> Keyboard, есть ли вариант, как exo-open --launch TerminalEmulator? Если так, что это говорит во втором столбце, ярлык?
DaimyoKirby
1) Вы имеете в виду раздел Клавиатура в настройках системы? Если так, я не могу найти это там. 2) Если вы имеете в виду менеджер настроек compiz, я тоже не могу его там найти. Несмотря на это, я попробовал вашу команду в терминале, и он говорит, что exo-open не установлен, поэтому я очень сомневаюсь, что опция будет там. Тем не менее, есть специальный ярлык для запуска терминала с командой x-terminal-emulator. Это тот, который я использую, так как терминал запуска по умолчанию, кажется, не работает.
Эрик

Ответы:

4

решение xmodmap

Я думаю, что вы можете сделать это, используя xmodmap , инструмент для изменения раскладок клавиш. Поскольку моя клавиатура не имеет правильной Superклавиши, я не могу подтвердить это решение, поэтому, пожалуйста, оставьте комментарий, если он не работает.
Все шаги выполняются в терминале

Распечатать текущую карту модификатора
Run

xmodmap

Это должно напечатать текущую карту модификатора, которая должна выглядеть примерно так

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Важная строка - это mod4строка, эта строка показывает, какие коды клавиш отображаются на символы клавиш Super_L и Super_R.

Резервное копирование карты ключей.
Прежде чем мы что-либо изменим, рекомендуется создать резервную копию текущей карты ключей.

xmodmap -pke > ~/.xmodmap.orig

Теперь, если что-то пойдет не так, вы можете просто напечатать

xmodmap ~/.xmodmap.orig

восстановить исходную карту ключей. (Если вы допустили серьезные ошибки и больше не можете правильно печатать, перезагрузка также работает)

Проверьте текущую карту Super ключей для ключей.
Предполагая, что Superключи имеют последовательные коды ключей (в данном случае 0x85 и 0x86), мы можем проверить текущее отображение, запустив

xmodmap -pke | grep -wA1 $((0x85))

конечно, вы должны изменить 0x85 на код ключа, который вы получили из своей карты модификаторов. Это должно дать вам

keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

( $((0x85))преобразует шестнадцатеричное число в десятичное)

Скопируйте поведение слева Super направо. Super
Как вы можете видеть из предыдущего шага, правая Superклавиша имеет код клавиши 134, но мы хотим, чтобы она имела поведение левой Superклавиши, которая имеет код 133. Мы можем сделать это, переназначив ключ, используя

xmodmap -e "keycode 134 = Super_L NoSymbol Super_L"

Проверка, если это работает,
если вы сейчас делаете

xmodmap -pke | grep -wA1 $((0x85))

Тебе следует увидеть

keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_L NoSymbol Super_L

Это означает, что оба ключа теперь имеют одинаковое поведение. Также карта-модификатор должна была измениться в соответствии с mod4, мы можем проверить это, запустив

xmodmap | grep 'mod4'

который должен дать

mod4        Super_L (0x85),  Super_L (0x86),  Super_L (0xce),  Hyper_L (0xcf)

И конечно же ярлыки, которые вы упомянули, тоже должны работать!

Сделайте отображение постоянным
Если оно работает, вы можете убедиться, что эти настройки автоматически применяются при загрузке. Пробег

echo 'keycode 134 = Super_L NoSymbol Super_L' >> ~/.xmodmaprc

сохранить ваше пользовательское сопоставление клавиш в файле ~/.xmodmaprc. Пробег

echo 'xmodmap ~/.xmodmaprc' >> ~/.xsessionrc

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

Герхард Бургер
источник
1
Прежде всего, спасибо за ваш ответ, я сделал все, чтобы сделать отображение постоянным. Вывод в терминале был точно таким, как упомянуто, однако мои проблемы остались прежними: левый супер показывает оболочку gnome, а правый - нет. Как и в случае с горячими клавишами, для левой суперкарты вам придется дважды нажать t, чтобы открыть терминал, а для правой супер достаточно одного раза.
Эрик
1
хм, тогда я тоже не в курсе: я думаю, эти ярлыки обрабатываются на более глубоком уровне.
Герхард Бургер
1
Ах, я нашел сообщение об ошибке, в последнее время больше людей имеют ту же проблему :) bugzilla.gnome.org/show_bug.cgi?id=659899
Герхард Бургер