Як змінити поточний обраний клавіатури з командного рядка?


12

У мене є розкладки клавіатури (їх дві) та переключення між ними налаштовано за допомогою наступної команди:

setxkbmap -layout us,ru -option -option "grp:lctrl_lshift_toggle,ctrl:nocaps"

Тепер я хочу перейти на usмакет, використовуючи деяку команду командного рядка. Це можливо?

Відповіді:


13

Ви можете використовувати xkb-перемикач ( -nпереходить на наступний макет):

xkb-switch -n

або xkblayout-stateset +1обертанням у вашому випадку):

xkblayout-state set +1

або xteз xautomation для імітації Control_L+ Shift_Lнатискання / випуск клавіші:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'

xkblayout-state - це чудово, дякую! Я просто використовую xkblayout-state set 1, і миттєво отримую usмакет.
Рогач

2

Пошуки Stack Exchange для kbdmap знаходять цю сторінку, не вказуючи цього слова. Для наочності, ось відповідь (не зовсім відповідає тегу X11 питання, але він повинен комусь допомогти)…

При обмеженні віртуальної консолі

- без X.

kbdmap (1)

kbdmap, vidfont- передній кінець для syscons та vt

… Дозволяє легко налаштувати доступні карти клавіш…

По-справжньому, це легко і (для мене, змінюючи розкладку клавіатури Великобританії) ефективно.

При використанні X

- наприклад, з TrueOS Desktop на базі FreeBSD.

З допису 5 в розділі Змінити розкладку клавіатури? | Форуми FreeBSD (2015-08-03):

kbdmapпризначений для консолі. setxkbmapце утиліта, яку ви хочете для X11. …

Там це попередження, наприклад , при переході на U nited Королівство:

$ kbdmap
kbdcontrol: getting keymap: Inappropriate ioctl for device
You are not on a virtual console - expect certain strange side-effects
lang_default = en
dialect = en_...UTF-8
lang_abk = en

…

keymap="uk.kbd"
$ 

1

Залежно від дистрибутива для розкладки клавіатури, це команда

loadkeys <path/to/file>

loadkey /lib/kbd/keymaps/i386/qwerty/pt_PT.map.gz

Якщо я правильно пам’ятаю. Також перевірте manpage на завантаження ключів, якщо ви хочете призначити певні ключі певній поведінці.


Проблема полягає в тому, що після того, як я зробив (наприклад) loadkeys us, він скидає налаштування, які я створив за допомогою setxkbmap (два макети та перемикання між ними)
Rogach,

наскільки я знаю, це команда змінити макети, якщо у вас є конкретні, то, мабуть, найкращим способом було б мати псевдонім у вашій оболонці, який би викликав завантажувачі з налаштуваннями юту. Наприклад: load_us завантажив би нам клавіатуру і фактично викликав би ключ /lib/kbd/keymaps/i386/qwerty/us.map.gz або подібний. І те ж саме для інших макетів.
BitsOfNix

Але як би я змінив налаштування клавіатури після цього? В даний час я змінюю макети, натискаючи Ctrl-Shift, використовуючи гвинти навантажувачів.
Рогач

дозвольте зробити крок назад сюди, з командного рядка я припускаю, що ви згадуєте термінал tty. Це означає, що ви не використовуєте xterm / terminology / gnome-terminal або будь-який інший емулятор, але насправді ви перебуваєте в середовищі без X-сервера. Зважаючи на це, тоді вам потрібно використовувати навантажувальні ключі, відповідно до вашого питання, я дав вам командний рядок: те, що ви насправді хочете, здається, є ключовим ярликом. Якщо у вас є конкретні ключі для картографування, вам потрібно створити власні макети та завантажити потім на запит клавіші завантаження з точки зору кліпу. Якщо замість цього ви хочете ярлик, то оновіть своє запитання.
BitsOfNix

Ні, я справді використовую графічне середовище та gnome-термінал зокрема. Просто мені потрібно змінити програму X-макетів, реагуючи на деякі події - таким чином, tty речі не працюватимуть.
Рогач

0

Погляньте на цю статтю з підробки під назвою: Зміна мови та розкладки клавіатури на різних дистрибутивах , щоб різні команди змінили розкладку клавіатури на різних дистрибутивах.

Більшість цих команд є графічними інтерфейсами, але якщо ви шукаєте більшість з них, можна також запустити з командного рядка. Наприклад, я використовую Fedora (дистрибутив на основі Red Hat). Команда system-config-keyboardпри запуску без аргументів показує мені графічний інтерфейс.

Але якщо я запускаю, system-config-keyboard --helpйого можна запускати і з командного рядка:

$ system-config-keyboard --help
Usage: system-config-keyboard [--help] [--noui] [--text] [<keyboardtype>]
       --help            Print out this message.
       --noui            Run in command line mode.
       --text            Run in text interface mode.

       <keyboardtype> options are: ar-azerty, ar-azerty-digits, ar-digits, ar-qwerty, ar-qwerty-digits, be-latin1, ben, ben-probhat, bg_bds-utf8, bg_pho-utf8, br-abnt2, cf, croat, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dev, dk, dk-latin1, dvorak, es, et, fi, fi-latin1, fr, fr-latin1, fr-latin9, fr-pc, fr_CH, fr_CH-latin1, gr, guj, gur, hu, hu101, ie, is-latin1, it, it-ibm, it2, jp106, ko, la-latin1, mk-utf, nl, no, pl2, pt-latin1, ro, ro-cedilla, ro-std, ro-std-cedilla, ru, sg, sg-latin1, sk-qwerty, slovene, sr-cy, sr-latin, sv-latin1, tj, tml-inscript, tml-uni, trq, ua-utf, uk, us, us-acentos

Отже, щоб змінити розкладку моєї клавіатури на російську, я міг виконати таку команду:

$ system-config-keyboard ru
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.