Skip to content

Instantly share code, notes, and snippets.

@Traineratwot
Last active May 4, 2024 08:14
Show Gist options
  • Save Traineratwot/585e8a63d026603f466163fcc111c7bc to your computer and use it in GitHub Desktop.
Save Traineratwot/585e8a63d026603f466163fcc111c7bc to your computer and use it in GitHub Desktop.
Punto для linux

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

Один из таких инструментов – это программа Punto Switcher, которая автоматически исправляет раскладку клавиатуры, но, к сожалению, она доступна только для Windows. Вы можете попробовать найти аналогичное решение для Linux или создать свой собственный скрипт.

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

  1. Напишите скрипт, который будет менять раскладку для заданного текста. Этот скрипт может быть написан на Python, используя библиотеку xclip для доступа к содержимому буфера обмена.

  2. Назначьте горячую клавишу в KDE Plasma для запуска этого скрипта. Это можно сделать через системные настройки KDE.

Вот примерный код на Python, который может быть использован в скрипте:

#!/usr/bin/python3
import sys
import subprocess
import pyautogui
import time
import pyautogui

def get_layout():
    layout= subprocess.getoutput("xset -q|grep LED| awk '{ print $10 }' ")
    if layout == '00001006':
        return 'ru'
    if layout == '00000002':
        return 'en'
def swith_layout():
  
  if(get_layout() == 'ru'):
    pyautogui.hotkey('ctrl', 'alt','[')
  else:
    pyautogui.hotkey('ctrl', 'alt', ']')
  return get_layout()
str = ""
eng = """qwertyuiop[]asdfghjkl;'zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>@#^&"""
ru =  """йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ"№:?"""
# Таблица соответствия между раскладками
if(get_layout() == 'ru') :
    layout_map = str.maketrans(ru,eng)
else:
    layout_map = str.maketrans(eng,ru)

# Получаем текст из буфера обмена

try:
    text = subprocess.check_output('xclip -o', shell=True).decode('utf-8')
except subprocess.CalledProcessError:
    sys.exit("Не удалось получить текст из буфера обмена")
    
if len(text) > 0:
    # Изменяем раскладку
    text = text.translate(layout_map)
    # Копируем изменённый текст обратно в буфер обмена
    try:
        p = subprocess.Popen(['xclip', '-selection', 'c'], stdin=subprocess.PIPE)
        p.communicate(input=text.encode('utf-8'))
        time.sleep(0.1)
        pyautogui.hotkey('ctrl', 'v')
        swith_layout()
    except subprocess.CalledProcessError:
        sys.exit("Не удалось поместить текст в буфер обмена")

Сохраните этот скрипт в файл, например switch_layout.py, и сделайте его исполняемым:

chmod +x switch_layout.py

Для работы скрипта может потребоваться установить пакет xclip:

sudo apt-get install xclip

Возможно вам понадобится обновить данные в строках 23 и 25 на ваши

Теперь вам нужно назначить горячую клавишу для запуска этого скрипта:

  1. Откройте "Системные настройки" KDE.
  2. Перейдите в раздел "Короткие команды и жесты".
  3. Выберите "Пользовательские короткие команды".
  4. Создайте новую команду, нажав "Добавить" -> "Новая Глобальная Комбинация Клавиш" -> "Команда/URL".
  5. Введите название для новой команды и в качестве действия укажите путь к вашему скрипту.
  6. Назначьте горячую клавишу, которую хотите использовать для запуска скрипта.
  7. Примените изменения и закройте настройки.

После выполнения этих шагов вы сможете использовать назначенную клавишу для исправления раскладки выделенного текста. Обратите внимание, что этот скрипт работает только для текста в буфере обмена, поэтому вам нужно будет сначала выделить текст и скопировать его (обычно комбинация Ctrl+C), затем нажать вашу горячую клавишу, и после этого вставить уже исправленный текст (Ctrl+V).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment