Две клавиатуры на одном компьютере. Когда я пишу с помощью A I, хочу использовать американскую раскладку клавиатуры, когда я использую B I, хочу шведский. Возможный?

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

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

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

6 ответов

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

$ 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

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

Моя ситуация: у меня есть Happy Hacking Keyboard, которая подключается через usb с перемещенными клавишами (контроль, где находится заглавная буква и т. Д.). Я использую это большую часть времени, но иногда я хотел бы использовать стандартную клавиатуру ноутбука или другую клавиатуру 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

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

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 или похожие.

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

       устройство
               Определяет числовой идентификатор устройства ввода, которое будет
               обновлено с новой раскладкой клавиатуры. Если не указано,
               Основная клавиатура устройства X-сервера обновлена.

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

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

У меня такая же ситуация, ноут с бразильской клавиатурой и внешней немецкой клавиатурой.

Мое решение состояло в том, чтобы добавить дваsetxkbmapвызовы, но сложная часть здесь — добавить все необходимые макеты для обоих вызовов:

      setxkbmap -device 12 -layout de,br
setxkbmap -device 14 -layout br,de

Устройство 12 — это внешняя немецкая клавиатура, а устройство 14 — бразильская клавиатура ноутбука.

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

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

С Ubuntu / GNOME:

Щелчок мыши

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

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

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

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

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

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

Другие вопросы по тегам