Две клавиатуры на одном компьютере. Когда я пишу с помощью 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 , но я не уверен, доступно ли это для шведского языка, и это может быть невозможно для языков, имеющих конструкции, аналогичные английским.