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

16801
Deleted

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

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

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

43

5 ответов на вопрос

36
flicken

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

$ 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 12 лет назад 0
Так какой же лучший способ установить эту конфигурацию при загрузке, вместо того, чтобы вручную вызывать setxkbmap? Richard Turner 10 лет назад 6
8
Arkenklo

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

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

5
Tommy McGuire

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

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

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

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

Хммм. -device 0 переключает оба, -device 2 (должна быть встроенной клавиатурой в ответе Arkenklo) ничего не переключает, по крайней мере, на моем ноутбуке и клавиатуре USB. Tommy McGuire 14 лет назад 0
5
zanegray

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

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

Ваш поздний ответ, возможно, заслуживает позднего комментария ... у вас есть Идентификатор как "Happy Hacking Kbd" в обоих ... Я думаю, что это, вероятно, ошибка, первый Идентификатор InputClass, вероятно, должен быть "Общая клавиатура" Daniel 7 лет назад 0
@Daniel Идентификаторы на самом деле разные, "Happily Hacked Keyboard" и "Happy Hacking Keyboard", но только немного :) zanegray 7 лет назад 0
спасибо за правильный! ... я обвиняю мои плохие очки для чтения:)> V Daniel 7 лет назад 0
0
Phil

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

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

С Ubuntu / GNOME:

Щелчок мыши

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

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

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

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

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

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