Простой ответ: нет, не должно, и это ненормальное поведение.
Лучше задавать этот вопрос не на Stack Exchange, а на форуме поддержки Chrome OS:https://support.google.com/chrome/community/?hl=en&gpf=%23!forum%2Fchrome
Я не думаю, что это можно сделать с любым программным обеспечением/программой , работающими внутри терминала, включая zsh
.
По крайней мере, я никогда не видел ни в одном софте, чтобы Правый Ctrl (отдельно)привязывался к чему-то, или описанный в руководстве способ его привязки, или явное различие между Левый Ctrl и Правый Ctrl . Если вы знаете одну программу с этой опцией (, работающую с любым терминалом ), сообщите, пожалуйста.
Программное обеспечение, которое я настроил, включает :vim
, zsh
, lf
, fzf
, tmux
, htop
, less
, most
и visidata
,
. и никто не говорит о том, что вы хотите. Так что, если какое-то программное обеспечение может сделать это в терминале, это, по крайней мере, крайне редко.
Единственные случаи, когда я видел что-то похожее наC-Left, C-Right
(цитату из man tmux
), это примерно любой Ctrl нажатый с стрелкой влево или вправо(Это действительно означает Левый или правый Ctrl):есть также C-Up, C-Down
, хотя на обычной клавиатуре нет клавиши вверх/вниз Ctrl .
Вы не можете с zsh
(, предполагая, что руководство zsh
верно):
после того, как поискman zshall
(man zsh
не завершен ), я вижу, что есть ярлык Ctrl + v для:
quoted-insert (^V) (unbound) (unbound)
Insert the next character typed into the buffer literally. An interrupt character will not be inserted.
Итак, теперь я пробую любой Ctrl + vлевый Ctrl + a или любой Ctrl + vправый Ctrl + a , оба показывают мне ^A
, это означает, что оба помещают один и тот же символ (, проверяя это также с помощью vim
и нажимая ga , я вижу, что это второй ascii
символ со значением 0x01
). Таким образом, zsh
, вероятно, не делает никакого различия между Left Ctrl и Right Ctrl .
Если я нажимаю любой Ctrl + vПравый Ctrl (только ), ничего не происходит.
И vim
, и zsh
говорят мне одно и то же :они не знают, когда клавиша Ctrl нажата без клавиши,
в то время как необычные клавиши, такие как Ctrl + vF1(по крайней мере, необычные в терминале )дают мне что-то:^[OP
с zsh
или <F1>
с vim
. Значение F1 можно распознать с помощью клемм.
Оболочка, подобная zsh
, может работать внутри tmux
, а tmux
имеет функцию send-keys
, которая не делает различий между Left Ctrl и Right Ctrl . Это означает, что вы не сможете делать то, что хотите в общем случае.
Чтобы быть уверенным, я также искал в tmux
исходном коде (я получил его с помощьюgit clone tmux
)и попытался rgrep -i "ctrl\|control" | grep -i "right\|ctrl.\?r\|r.\ctrl"
увидеть каждый раз, когда он говорит о правой клавише Ctrl , и то, что я нашел, это:
tty-keys.c:134: { "\033Oc", KEYC_RIGHT|KEYC_CTRL },
tty-keys.c:405: { TTYC_KRIT5, KEYC_RIGHT|KEYC_CTRL },
tty-keys.c:406: { TTYC_KRIT6, KEYC_RIGHT|KEYC_SHIFT|KEYC_CTRL },
tty-keys.c:407: { TTYC_KRIT7, KEYC_RIGHT|KEYC_META|KEYC_IMPLIED_META|KEYC_CTRL },
CHANGES:2395: control the maximum length of left and right components of the
status bar.
CHANGES:2550: C- for ctrl keys (^ is still accepted as an alternative).
status.c:1168: case KEYC_RIGHT|KEYC_CTRL:
Итак, большинство из них говорят о Ctrl + Right , а остальные не имеют значения.
На некоторых терминалах, таких как st (, где я могу настроить любую клавишу ), на config.h
я вижу код вроде:
{ XK_KP_End, ControlMask, "\033[1;5F", +1, 0},
{ XK_KP_End, ShiftMask, "\033[K", -1, 0},
означает, что какие-то действия выполняются при нажатии Ctrl + End или Shift + End , и я нигде не видел разницы между левым и правым Ctrl . Есть только одна ControlMask
, а также только одна ShiftMask
(, поэтому мой ответ был бы таким же, если бы речь шла о клавишах Shift ).
Я также попробовал свою команду rgrep
на исходном коде st
, и опять же, речь идет только о Ctrl + Right .
Я могу сделать это для любого другого эмулятора терминала. Я думаю, что достаточно рассмотреть, что в общем случае это невозможно сделать. На самом деле есть способ получить такое поведение и получить его только на zsh
, но это очень сложно :редактировать исходный код zsh
,и вашего эмулятора терминала, и, возможно, xorg
.
Если вы хотите изменить поведение Right Ctrl , вам нужно будет привязать Right Ctrl для каждого программного обеспечения.
См. man xmodmap
, man setxkbmap
и man xkeyboard-config
для получения дополнительной информации о конфигурации клавиатуры.
Обычно клавиши Ctrl являются модификаторами. Это означает, что они должны что-то делать только тогда, когда вы нажимаете его другой клавишей.
примечание:в некоторых редких случаях клавиша может действовать либо как модификатор, либо как клавиша, например:
libreoffice
)где вы увидите подчеркнутые буквы при нажатии клавиши Alt . xev
— это инструмент для тестирования событий, поэтому он распознает все, включая нажатие произвольной клавиши. emacs
имеет функцию клавишного аккорда . Это не совсем официальные модификаторы(Shift или Control или Alt и т. д. ), но это может заставить обычную клавишу действовать как модификатор при нажатии с некоторым другой ключ с некоторой задержкой. emacs
можно запустить из терминала снаружи, а внутри emacs
можно запустить оболочку. Так что, может быть, вы можете :foo
)везде, используя setxkbmap
или xmodmap
. emacs
, переназначьте foo
обратно на right control
, используя key-chord
для некоторых частей, но не для того места, где вы запускаете zsh
. emacs
— единственный «эмулятор терминала», который я знаю (на самом деле, он должен быть текстовым редактором, но у него много функций,включая запуск оболочки )с функцией, близкой к «что-то, являющееся одновременно модификатором и обычным ключом».