LINUX.ORG.RU

Скрипт для переключения нескольких раскладок

 , ,


0

2

Привет!

Я использую Archlinux и Pantheon Shell из проекта ElementaryOS, но в нем есть неприятный баг с переключением раскладок. Сейчас я использу этот скрипт для переключения между раскладками используя клавиши capslock и shift+capslock для переключения. Работает он неидеально (небольшая задержка между переключение все же есть), но быстрее стандартного переключателя. Сейчас я изучаю еще один язык и мне нужно добавить в систему еще одну раскладку.

Из-за того, что скрипт на питоне в 50 строк выполняется медленно, я хотел бы использовать для переключения команды setxkbmap us, setxkbmap ru, setxkbmap eo, которые в отличии от всего вышеперечисленного работают мгновенно. Вопрос в том как объединить их в скрипт, чтобы нажатие на CAPSLOCK включало US, SHIFT + CAPSLOCK включало RU, а SHIFT + TAB(other) включало EO? Я никогда не писал такие скрипты и не имею представления, как это должно выглядеть.

  • Стандартный переключатель имеет большую задержку при переключении, я успеваю напечатать 3-4 буквы перед тем как раскладка переключится, а печатаю я медленно.

  • Питон-скрипт имеет меньшую задержку, но я успеваю напечатать 1 букву на другой раскладке.

  • В пантеоне не работают пользовательские сочетания клавиш и в нем нет возможности использовать нужные мне сочетания.

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

  • Хотелось бы обойтись без установки дополнительного по.



Последнее исправление: mak874 (всего исправлений: 1)

Interalie, mi uzas Arĉlinukson

Esperanto ne estas lingvo, kiun vi volus lerni, plej bone lernu realajn lingvojn.

Пробовал https://wiki.archlinux.org/index.php/Xorg/Keyboard_configuration#Using_setxkbmap здесь воспользоваться командами? Поставить, например, setxkbmap -layout en -option grp:shift,tab; setxkbmap -layout ru -option grp:capslock? Имена раскладок и опций приведены для примера и необязательно являются настоящими, надо уточнить их правильное написание.

anonymous
()
Ответ на: комментарий от anonymous

Да, не работает. Если вручную вбить setxkbmap us, все ок.

mak874
() автор топика
Ответ на: комментарий от anonymous

Esperanto ne estas lingvo, kiun vi volus lerni, plej bone lernu realajn lingvojn.

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

anonymous
()

скрипт на питоне в 50 строк выполняется медленно

Скрипт запускается каждый раз или висит как демон? Если первое - может потому и "тормозит", переделайте его в сервис.

Я для переключения раскладок использую tapper. Сам список раскладок задаю через setxkbmap, а tapper'у уже говорю какой кнопкой какую раскладку активировать.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

Висит как демон и жрет 16 метров памяти. Про дополнительное по уже говорил. Интересно как это сделать на баше.

mak874
() автор топика
Ответ на: комментарий от mak874

Его не обязательно "устанавливать", можно скомпилировать и положить где угодно, занимает меньше двух метров.

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

Я пробовал разные варианты, лучше tapper'а (по многим показателям) не нашел. Но раз это не то что вам нужно, могу только пожелать успехов в поисках!

micronekodesu ★★★
()
Ответ на: комментарий от mak874

Стандартный переключатель имеет большую задержку при переключении, я успеваю напечатать 3-4 буквы перед тем как раскладка переключится, а печатаю я медленно.

Висит как демон и жрет 16 метров памяти.

Если бы я выбирал между первым и вторым, я выбрал бы второе. И, кстати, про 16 метров:

$ top -p 2665 -p 59979
top - 08:45:02 up 1 day,  8:13,  1 user,  load average: 0.61, 0.51, 0.52
Tasks:   2 total,   0 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.8 us,  2.0 sy,  0.0 ni, 90.5 id,  2.8 wa,  0.5 hi,  1.3 si,  0.0 st
MiB Mem :  32079.4 total,  18297.8 free,   4894.4 used,   8887.2 buff/cache
MiB Swap:  10240.0 total,   9318.2 free,    921.8 used.  26003.0 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND        RSan   RSfd   RSlk   RSsh 
  59979 vdb       20   0  304988  16080   5772 S   0.3   0.0   0:00.30 python3       10308   5772      0      0 
   2665 vdb       20   0  527844   7692   6868 S   0.0   0.0   0:06.41 tapper          824   6868      0      0 

Процесс python3 исполняет «тот» скрипт для переключения между раскладками.

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 1)

А в чём профит использовать полноценную раскладку для шести букв? Кроме того в Эсперанто допускается использование «x» для написания диакритических знаков. Но если так хочется использовать нужные символы, то я бы рекомендовал настроить композитные клавиши.

cat ~/.XCompose

include "%L"

<Multi_key> <1> : "Ĉ"
<Multi_key> <c> : "ĉ"

<Multi_key> <2> : "Ĝ"
<Multi_key> <g> : "ĝ"

<Multi_key> <3> : "Ĥ"
<Multi_key> <h> : "ĥ"

<Multi_key> <4> : "Ĵ"
<Multi_key> <j> : "ĵ"

<Multi_key> <5> : "Ŝ"
<Multi_key> <s> : "ŝ"

<Multi_key> <6> : "Ŭ"
<Multi_key> <u> : "ŭ"
Prosto_user ★★★
()
Ответ на: комментарий от Prosto_user

В том что не нужно нажимать дополнительную клавишу, чтобы напечатать букву в том же регистре. Но видимо вариантов все равно нет.

mak874
() автор топика
Ответ на: комментарий от mak874

Плюс к этому композитная клавиша тоже имеет задержку…

mak874
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.