44

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

Это возможно? И как мне это сделать?

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

5 ответов5

37

Во-первых, вы должны найти идентификатор устройства клавиатуры для изменения:

$ xinput -list | grep -i key
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ LITEON Technology USB Keyboard            id=9    [slave  keyboard (3)]
    ↳ LITEON Technology USB Keyboard            id=10   [slave  keyboard (3)]

Затем измените макет, используя setxkbmap:

$ setxkbmap -device 9 dvorak

В некоторых версиях setxkbmap требуется аргумент -layout:

$ setxkbmap -device 9 -layout dvorak
8

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

sudo cat /dev/input/event(0,1,2..)

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

setxkbmap -device (1-x) us .

Я обнаружил, что setxkbmap -device 1 us настроил обе (все) клавиатуры, в то время как setxkbmap -device 6 us затронул только вторичную. Возможно, имеет отношение к тому, что они оба были подключены через PS/2.

Это, конечно, не гарантировано для вас, и даже не классифицирует как правильный ответ, но это подтверждает, что это вообще возможно. Я не знаю, по какой схеме названы отдельные клавиатуры в /dev/input , но я уверен, что имена могут быть указаны в udev, что позволяет поместить соответствующую команду setxkbmap в /etc/rc.local или похожие.

6

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

Моя ситуация: у меня есть Happy Hacking Keyboard, которая подключается через usb с перемещенными клавишами (контроль, где находится caps lock и т.д.). Я использую это большую часть времени, но иногда я хотел бы использовать стандартную клавиатуру ноутбука или другую клавиатуру USB. Для этих клавиатур я создал собственную раскладку клавиатуры.

Хитрость в том, что пользовательская раскладка клавиатуры не должна применяться к Happy Hacking Keyboard.

Решение: я создал файл конфигурации Xorg следующим образом:

$ cat /etc/X11/xorg.conf.d/30-keyboard.conf 
Section "InputClass"
        Identifier "Happily Hacked Keyboard"
        MatchDevicePath "/dev/input/event*"
        MatchIsKeyboard "on"
        Driver "evdev"

        Option "XkbLayout" "us"
        Option "XkbVariant" "hhk"
EndSection

Section "InputClass"
        Identifier "Happy Hacking Keyboard"
        MatchIsKeyboard "on"
        MatchVendor "Topre_Corporation"
        Driver "evdev"

        Option "XkbLayout" "us"
        Option "XkbVariant" "basic"
EndSection

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

Вы можете сопоставить устройства на основе нескольких параметров: xorg doc

5

Это может быть возможно, судя по аргументу -device для setxkbmap:

       -device device
               Specifies the numeric device id of the input device to be
               updated with the new keyboard layout. If not specified, the
               core keyboard device of the X server is updated.

Естественно, однако, у меня нет второй клавиатуры, чтобы попробовать ее в данный момент.

-А Дворжак пользователь

0

Я не думаю, что вы можете сделать это именно так, как вы хотите. Есть два варианта, которые я знаю:

1) Вы можете сделать переключение простым щелчком мыши / нажатием клавиши.

С Ubuntu / GNOME:

Щелчок мыши

В Ubuntu / Gnome, если у вас есть настроенные макеты ввода, перейдите в пустое место на панели, щелкните правой кнопкой мыши и нажмите «Добавить в панель». Выберите «Индикатор клавиатуры», чтобы добавить его на панель. Это должно ввести крошечный кусочек текста, указывающий вашу раскладку клавиатуры, и вы можете нажать эту кнопку, чтобы переключиться.

Сочетание клавиш

Система -> Настройки -> Клавиатура -> Макеты -> Параметры макета

Там есть опция "Ключ (ы) для изменения макета". Вы можете установить его на Alt+Shift, который не должен мешать обычным сочетаниям клавиш.

Я предполагаю, что есть способ KDE сделать это также.

2) Другой альтернативой является http://en.wikipedia.org/wiki/Xneur, но я не уверен, что это доступно для шведского языка, и это может быть невозможно для языков, которые имеют конструкции, аналогичные английским.

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