mKittyConfShortcuts.sh 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #!/bin/bash
  2. source "sKitty.sh"
  3. HEAD(){ for (( a=2; a<=14; a++ ))
  4. do
  5. TPUT $a 1
  6. $E "\033[1;35m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  7. done
  8. TPUT 3 1
  9. $E "\033[0m\033[35m+- Горячие клавиши ---------------------------------- Keyboard shortcuts --------+\033[0m";
  10. TPUT 12 1
  11. $E "\033[0m\033[35m+- Up \xE2\x86\x91 \xE2\x86\x93 Down Select Enter -----------------------------------------------------+\033[0m";
  12. MARK;TPUT 1 1
  13. $E "$c";UNMARK;}
  14. i=0; CLEAR; CIVIS;NULL=/dev/null
  15. # 32 это расстояние сверху и 48 это расстояние слева
  16. FOOT(){ MARK;TPUT 15 1
  17. $E "$c";UNMARK;}
  18. # это управляет кнопками ввер/хвниз
  19. i=0; CLEAR; CIVIS;NULL=/dev/null
  20. #
  21. M0(){ TPUT 5 3; $e " Ключи идентифицируются символами Unicode \e[32m Unicode \e[0m";}
  22. M1(){ TPUT 6 3; $e " использовать имена ключей XKB для привязки ключей \e[32m XKB \e[0m";}
  23. M2(){ TPUT 7 3; $e " использовать необработанные коды системных ключей для сопоставления ключей ";}
  24. M3(){ TPUT 8 3; $e " используется модификаторom по умолчанию \e[32m kitty_mod ctrl+shift \e[0m";}
  25. M4(){ TPUT 9 3; $e " удалить все определения ярлыков \e[32m clear_all_shortcuts \e[0m";}
  26. M5(){ TPUT 10 3; $e " чтобы избежать повторения тех же параметров \e[32m action_alias \e[0m";}
  27. M6(){ TPUT 11 3; $e " Аналогично action_alias выше, специально для kitty\e[32m kitten_alias \e[0m";}
  28. #
  29. M7(){ TPUT 13 3; $e "\e[32m Exit \e[0m";}
  30. LM=7
  31. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  32. POS(){ if [[ $cur == up ]];then ((i--));fi
  33. if [[ $cur == dn ]];then ((i++));fi
  34. if [[ $i -lt 0 ]];then i=$LM;fi
  35. if [[ $i -gt $LM ]];then i=0;fi;}
  36. REFRESH(){ after=$((i+1)); before=$((i-1))
  37. if [[ $before -lt 0 ]];then before=$LM;fi
  38. if [[ $after -gt $LM ]];then after=0;fi
  39. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  40. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  41. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  42. INIT(){ R;HEAD;FOOT;MENU;}
  43. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  44. # Функция возвращения в меню
  45. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  46. while [[ "$O" != " " ]]; do case $i in
  47. 0) S=M0;SC; if [[ $cur == enter ]];then R;echo -e "
  48. Ключи идентифицируются просто символами Unicode в нижнем регистре.
  49. Например: \`\`a\`\` для клавиши A, \`\`[\`\` для клавиши левой квадратной скобки и т. д.
  50. Для функциональных клавиш, таких как \`\`Enter или Escape\`\`, имена присутствуют на:
  51. https://sw.kovidgoyal.net/kitty/keyboard-protocol/#functional-key-definitions
  52. Для клавиш-модификаторов используются следующие имена:
  53. ctrl (control, ⌃), shift (⇧), alt (opt, option, ⌥), super (cmd, команда, ⌘).
  54. См. также: Моды GLFW
  55. ";ES;fi;;
  56. 1) S=M1;SC; if [[ $cur == enter ]];then R;echo -e "
  57. В Linux вы также можете использовать имена ключей XKB для привязки ключей, kitty
  58. не поддерживаются GLFW. См. ключи XKB
  59. https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
  60. для списка ключевых имен. Используемое имя — это часть после префикса XKB_KEY_
  61. Обратите внимание, что вы можете использовать имя ключа XKB только для ключей,
  62. которые не известны как ключи GLFW.
  63. ";ES;fi;;
  64. 2) S=M2;SC; if [[ $cur == enter ]];then R;echo -e "
  65. Наконец, вы можете использовать необработанные коды системных ключей для сопоста-
  66. вления ключей, опять же только для ключей, которые не известны как ключи GLFW.
  67. Чтобы увидеть системный ключ код для ключа, запустите kitty с опцией:
  68. \e[32m kitty --debug-input\e[0m
  69. Затем kitty будет выводить отладочный текст для каждого ключевого события.
  70. В этом text ищите \`\`native_code\`\`,
  71. значение которого становится именем ключа в ярлыке. Например:
  72. .. code-block:: none
  73. on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a'
  74. Здесь имя ключа для ключа A — 0x61, и вы можете использовать его с ::
  75. map ctrl+0x61 something
  76. сопоставить ctrl+a с чем-то. Вы можете использовать специальное действие no_op,
  77. чтобы отменить сопоставление сочетания клавиш, назначенного в конфигурации
  78. по умолчанию:
  79. map kitty_mod+space no_op
  80. Если вы хотите, чтобы kitty полностью игнорировал ключевое событие, даже не
  81. отправляя его в программу, работающую в терминале, сопоставьте его с
  82. discard_event::
  83. map kitty_mod+f1 discard_event
  84. Вы можете комбинировать несколько действий, которые будут запускаться одним
  85. ярлыком, используя приведенный ниже синтаксис:
  86. Например:
  87. map kitty_mod+e combine : new_window : next_layout
  88. это создаст новое окно и переключится на следующий доступный макет.
  89. Вы можете использовать сочетания клавиш с несколькими клавишами,
  90. используя синтаксис, показанный ниже:
  91. map key1>key2>key3 action
  92. Например:
  93. map ctrl+f>2 set_font_size 20
  94. Полный список действий, которые можно сопоставить с нажатиями клавиш,
  95. доступен здесь </actions>.
  96. \e[32m \e[0m";ES;fi;;
  97. 3) S=M3;SC; if [[ $cur == enter ]];then R;echo -e "
  98. Значение kitty_mod используется в качестве модификатора для всех ярлыков по умол-
  99. чанию, вы можете изменить его в файле kitty.conf, чтобы изменить модификаторы для
  100. всех ярлыков по умолчанию.
  101. \e[32m kitty_mod ctrl+shift\e[0m
  102. ";ES;fi;;
  103. 4) S=M4;SC; if [[ $cur == enter ]];then R;echo -e "
  104. Вы можете попросить kitty удалить все определения ярлыков, которые вы видели до
  105. этого момента. Полезно, например, для удаления ярлыков по умолчанию.
  106. \e[32m clear_all_shortcuts no\e[0m
  107. ";ES;fi;;
  108. 5) S=M5;SC; if [[ $cur == enter ]];then R;echo -e "
  109. Например. action_alias launch_tab launch --type=tab --cwd=current Определите
  110. псевдонимы, чтобы избежать повторения одних и тех же параметров в нескольких со-
  111. поставлениях. Псевдонимы могут быть определены для.
  112. map f1 launch_tab vim
  113. map f2 launch_tab emacs
  114. Аналогично вызову псевдонима kitty:
  115. action_alias hints kitten hints --hints-offset=0
  116. \e[32m action_alias\e[0m
  117. ";ES;fi;;
  118. 6) S=M6;SC; if [[ $cur == enter ]];then R;echo -e "
  119. Например. kitty_alias hints hints --hints-offset=0 Аналогично action_alias выше,
  120. но специально для kitty. Как правило, лучше использовать action_alias.
  121. Эта опция является устаревшей версией, представленной для обратной совместимости.
  122. Это приводит к замене всех вызовов kitty с псевдонимом.
  123. Таким образом, приведенный выше пример приведет к тому,
  124. что ко всем вызовам kitty подсказок будет применена опция --hints-offset=0
  125. \e[32m kitten_alias\e[0m
  126. ";ES;fi;;
  127. #
  128. 7) S=M7;SC;if [[ $cur == enter ]];then R;exit 0;fi;;
  129. esac;POS;done