Skip to content

Instantly share code, notes, and snippets.

@zhum
Created April 17, 2021 12:32
Show Gist options
  • Save zhum/e1904e839821b7b37c67e2d653e184d7 to your computer and use it in GitHub Desktop.
Save zhum/e1904e839821b7b37c67e2d653e184d7 to your computer and use it in GitHub Desktop.
Исправление раскладки выделенного текста
#!/bin/bash
# Необходимые программы; всё доступно через apt.
# ╔════╦═══════╦══════╦═════════╗
# ║xsel║xdotool║xmacro║setxkbmap║
# ╚════╩═══════╩══════╩═════════╝
# ╔═══════════════════════════════════════════════════════════════════════════════╗
# ║ 1.)Данные для скрипта исправляющего раскладку выделенного текста… ║
# ╚═══════════════════════════════════════════════════════════════════════════════╝
ID=$$
tmp1="/tmp/ruseng-${ID}.txt"
tmp2="/tmp/ruseng2-${ID}.txt"
#setxkbmap -layout "us,ru" #может понадобиться…
xsel -b > $tmp1; XF=$(cat $tmp1)
#echo "KeyStrPress ISO_Next_Group KeyStrRelease ISO_Next_Group"|xmacroplay -d 350 ":0.0" # Scroll_Lock приобретает такое название…
#echo "KeyStrPress Caps_Lock KeyStrRelease Caps_Lock"|xmacroplay -d 350 ":0.0" # по кругу Caps_Lock’ом лучший вариант
echo "KeyStrPress Control_L KeyStrPress Control_R KeyStrRelease Control_R KeyStrRelease Control_L"|xmacroplay -d 350 ":0.0"
xsel -o > $tmp2;xdotool key --delay 150 Delete;EE=$(cat $tmp2)
QZ=$(echo -n $EE | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};\
':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщз\
йкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST\
UVWXYZ[]{};':\",.<>#\`~/")
echo -n $QZ | xsel -b -i;sleep 0.2
xdotool key --delay 250 Shift_R+Insert
xsel --clear; echo -n $XF | xsel -b -i;sleep 0.2;echo -n $XF | xsel -p -i; sleep 0.2
rm "$tmp1" "$tmp2"
# ╔═══════════════════════════════════════════════════════════════════════════════╗
# ║ 2.)Данные для скрипта меняющего раскладку всей строки без выделения текста… ║
# ╚═══════════════════════════════════════════════════════════════════════════════╝
# #setxkbmap -layout "us,ru" #может понадобиться…
# xsel -b > /tmp/fileZ.txt; XF=$(cat /tmp/fileZ.txt)
# echo "KeyStrPress Control_L KeyStrPress Control_R KeyStrRelease Control_R KeyStrRelease Control_L"|xmacroplay -d 350 ":0.0"
# xsel --clear
# xdotool key --delay 250 End
# xdotool key --delay 250 Home
# xdotool key --delay 250 End
# xdotool key --delay 250 Shift_R+Home
# xsel -o > /tmp/fileX.txt; cat /tmp/fileX.txt | xsel
# EE=$(xsel)
# xdotool key --delay 150 Home;xdotool keydown --delay 250 Shift_R key --delay 150 \
# End key --delay 150 Delete keyup --delay 250 Shift_R
# QZ=$(echo -n $EE | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};\
# ':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщз\
# йкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST\
# UVWXYZ[]{};':\",.<>#\`~/")
# echo -n $QZ | xsel -b -i;sleep 0.2
# xdotool key --delay 250 Shift_R+Insert
# xsel --clear; echo -n $XF | xsel -b -i;sleep 0.2;echo -n $XF | xsel -p -i; sleep 0.2
# ╔═══════════════════════════════════════════════════════════════════════════════╗
# ║ 3.)Данные для скрипта меняюшего раскладку последнего слова без его выделения… ║
# ╚═══════════════════════════════════════════════════════════════════════════════╝
# #setxkbmap -layout "us,ru" #может понадобиться…
# xsel -b > /tmp/fileZ.txt; XF=$(cat /tmp/fileZ.txt)
# echo "KeyStrPress Control_L KeyStrPress Control_R KeyStrRelease Control_R KeyStrRelease Control_L"|xmacroplay -d 350 ":0.0"
# xdotool key --delay 150 End
# xdotool key --delay 150 Shift_R+Home
# xsel -o > /tmp/fileX.txt; cat /tmp/fileX.txt | xsel
# EE=$(xsel)
# xdotool key --delay 150 Home;xdotool keydown --delay 250 Shift_R key --delay 150 \
# End key --delay 150 Delete keyup --delay 250 Shift_R
# QA=$(echo -n $EE | sed -e 's:[^ ]*$::')
# QZ=$(echo -n $EE | grep -o '\S\+\s*$' | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};\
# ':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщз\
# йкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST\
# UVWXYZ[]{};':\",.<>#\`~/")
# echo -n "${QA}${QZ}" | xsel -b -i;sleep 0.2
# xdotool key --delay 250 Shift_R+Insert
# xsel --clear; echo -n $XF | xsel -b -i;sleep 0.2;echo -n $XF | xsel -p -i; sleep 0.2
# ╔═══════════════════════════════════════════════════════════════════════════════╗
# ║ 4.)Данные для скрипта производящего инвертирование регистра… ║
# ╚═══════════════════════════════════════════════════════════════════════════════╝
# xsel -b > /tmp/fileZ.txt; XF=$(cat /tmp/fileZ.txt)
# xsel -o > /tmp/fileX.txt;xdotool key --delay 150 Delete;EE=$(cat /tmp/fileX.txt)
# QZ=$(echo -n $EE | sed 's/\w/&`/g;s/\([[:upper:]]\)`/\l\1/g;s/\([[:lower:]]\)`/\u\1/g')
# echo -n $QZ | xsel -b -i;sleep 0.2
# xdotool key --delay 250 Shift_R+Insert
# xsel --clear; echo -n $XF | xsel -b -i;sleep 0.2;echo -n $XF | xsel -p -i; sleep 0.2 <<paragraph
# ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment