Shift-Insertを使用してWSLに貼り付ける

Shift-Insertを使用してWSLに貼り付ける
# When I do just Shift-Insert, I get
~$ 2~
# When I do Ctrl-V, then Shift-Insert, I get
~$ ^[[2;2~

Shift-insertは、Windows CMDやGit-Bashなどの他の状況でもうまく機能します。

wslでは、Ctrl-Shift-Vを使用して貼り付けることができますが、Shift-Insertを使用する方が良いでしょう。

解決策はありますか?

ベストアンサー1

~によるとマイクロソフト/WSL:

WSLディストリビューションはWindowsコンソールで起動します(サードパーティのコンソール/ターミナルを起動する手順を実行していない場合)。したがって、UI / UXに関する質問を下に送信してください。Windowsコンソール問題トラッカー。

しかし、与えられたリンクWindowsコンソール指すウィンドウターミナル:

新しいWindows端末と元のWindowsコンソールホストの両方が同じ場所にあります!

(利用可能な)文書がないため、そのソースコードを指して質問に答える必要があります。

関連ブロック(練習したいブロック)はここにあります。windowio.cpp:

    // handle shift-ins paste
    if (inputKeyInfo.IsShiftOnly() && ShouldTakeOverKeyboardShortcuts())
    {
        if (!bKeyDown)
        {
            return;
        }
        else if (VirtualKeyCode == VK_INSERT && !(pSelection->IsInSelectingState() && pSelection->IsKeyboardMarkSelection()))
        {
            Clipboard::Instance().Paste();
            return;
        }
    }

条件の半分(この目標を達成するためPaste())が満たされる可能性が高い(特定の条件を除く)。抜け穴このプログラムでは)。明確ではないもの:

  • ShouldTakeOverKeyboardShortcuts()——しかし、これは以下で使用されます。Ctrl+Shift+プラス/マイナスパスワード

  • pSelection->IsKeyboardMarkSelection()- マウスを使った選択を仮定します。

しかし、これは、対応するHandleKeyEventメソッドが2つの異なるキーシーケンスを等しく扱うと仮定する。^[[2;2~プログラムの他の部分で、次のようterminalInput.cpp組み込みテーブル

// Sequences to send when a modifier is pressed with any of these keys
// Basically, the 'm' will be replaced with a character indicating which
//      modifier keys are pressed.
static constexpr std::array<TermKeyMap, 22> s_modifierKeyMapping{

そしてここで申請してください:

// If a modifier key was pressed, then we need to try and send the modified sequence.
if (keyEvent.IsModifierPressed() && _searchWithModifier(keyEvent, senderFunc))
{
    return true;
}

コードを読むと、それはすべてです。上流論理的に、windowio.cppそのような組み合わせは決して達成することはできません。開発者はこの動作をオーバーライドまたは変更する方法を提供していません。

@Rody-Oldenhuisのコメントで提案したように:

あなたはそれを使用することができます最悪;これはデフォルトでCtrl + Ins / Shift-Insをサポートします。

(ミントから抽出)。

おすすめ記事