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


47

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

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

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

Ответы:


41

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

$ 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

Привет, я сделал это, и он отлично работает для всего, кроме клавиш со стрелками и других клавиш со стрелками (которые больше не работают вообще). Возможно, клавиатура является одной из тех эргономичных, которые имеют необычные сочетания клавиш ... есть идеи, как заставить их работать снова?
btelles

8
Так какой же лучший способ установить эту конфигурацию при загрузке, вместо того, чтобы вручную вызывать setxkbmap?
Ричард Тернер

9

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

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или подобное.


9

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

Моя ситуация: у меня есть 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


Ваш поздний ответ, возможно, заслуживает позднего комментария ... у вас есть Идентификатор как "Happy Hacking Kbd" в обоих ... Я думаю, что это, вероятно, ошибка, первый Идентификатор InputClass, вероятно, должен быть "Общая клавиатура"
Даниэль

1
@Daniel Идентификаторы на самом деле разные, "Happily Hacked Keyboard" и "Happy Hacking Keyboard", но только немного :)
zanegray

спасибо за правильный! ... Я виню мои плохие очки для чтения
Даниэль

... но это (для клавиатуры очень хорошо работающей, также возможны различные множественные раскладки для циклического перехода !, например, нас, ru, ua на одной и de, cz, ua на второй клавиатуре) для меня как-то убило мою среднюю кнопку мыши моей внешней мыши USB.
Надо

Я хотел бы, чтобы это решение работало для меня, но оно не работает - возможно, потому что я не могу получить правильный идентификатор продавца? Команда "lsusb -v | grep -e idVendor" дала мне "0x09da A4Tech Co., Ltd." поэтому я также пробовал различные варианты (без шестнадцатеричного кода, подчеркивания вместо пробела и т. д.). Затем я попробовал идентификатор поставщика, полученный с помощью «xinput list» и «udevadm info» (A4TECH). Я даже изменил число с 30 на 50 еще и потому, что у меня есть файл "/usr/share/X11/xorg.conf.d/40-libinput.conf", включая глобальную конфигурацию клавиатуры. Но я не мог получить ничего. Есть идеи, пожалуйста? (Ubuntu 18.04)
Сади

5

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

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

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

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


Хммм. -device 0 переключает оба, -device 2 (должна быть встроенной клавиатурой, согласно ответу Аркенкло) ничего не переключает, по крайней мере, на моем ноутбуке и клавиатуре USB.
Томми МакГуайр

1

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

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

С Ubuntu / GNOME:

Щелчок мыши

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.