web-dev-qa-db-ja.com

Ctrl-Enter、Shift-Enter、Enterは同じキーとして解釈されます

KDEでFedora30を使用していて、(Zsh)autosuggest-executeをにバインドしようとしています Ctrl+Enter 便宜上。 gnome-terminalで動作させようとしています。

ただし、次の3つの場合、showkey -aは常に^Mを返すことがわかりました。 Enter、 Ctrl+Enter、および Shift+Enter

これを試しました methodCtrl <Return> : "\033M" in .XCompose)が、XComposeファイルが読み取られていなかったため、まったく機能しませんでした。そこで、ibusをそのままインストールすることにしました KDEインストールには付属していませんdnf groupinstall input-methodsを使用します。

ìbus-setupを実行すると、次の警告が表示されます。

GTK+ supports to output one char only: "\033M": ! Ctrl <Return> : "\033M"

残念ながら、すべての入力の組み合わせは、^Mxtermgnome-terminalに要約されます。

Ibusの有無にかかわらず、これらのキーの組み合わせを区別する方法はありますか?

1
rudib

Ibusなどをインストールする必要はありません。すべてのX11アプリは、正確なキーコードにアクセスできますおよび xkb/ximの翻訳にアクセスでき、無視後者の場合もあります。

問題はターミナルエミュレータにあり、ターミナルでCtrl-Enterのようなキーコンボを表す標準的な方法がないという事実があります。また、各端末エミュレーターには、キーバインディングを構成する独自の方法があります(またはありません)。

xtermでは、他のxtベースのアプリと同様に、X11リソースを使用して簡単に構成できます。たとえば、これはCtrl-EnterをF33ファンクションキーに対応するエスケープに変換します(infocmpによる):

xterm -xrm '*VT100*translations: #override Ctrl<Key>Return:string("\033[20;5~")'

次に、その\e[20;5~をreadlineの~/.inputrcで必要なアクションにバインドし、bindbashに、bindkeyzshなど。

X11リソースは、ルートウィンドウのRESOURCE_MANAGERプロパティとして保存され、xrdbユーティリティを使用してそこにロードできます。通常、xrdbは、x11セッション初期化スクリプトから呼び出され、~/.Xresourcesファイルのコンテンツをロードします。

konsolegnome-terminalなどのKDEまたはGnomeアプリケーションには、アクションへのキーコンボを構成する独自の方法があります。疑似ttyマスターに任意の文字列を書き込む機能が含まれているかどうかはわかりません。

1
mosvy

konsoleで設定する方法は次のとおりです。

KonsoleのキーバインディングのKdeリファレンス も参照してください。

[設定]-> [現在のプロファイルの編集]-> [キーボード]->(使用するキーボードレイアウトを選択)-> [編集]-> [Returnの検索/フィルター]。

次のエントリを編集します(左の列のみ):

  • Return-Shift-NewLineReturn-Shift-Ctrl-NewLineに変更します
  • Return-Shift+NewLineReturn-Shift-Ctrl+NewLineに変更します

これにより、EnterCtrl + Enterを区別できます。

次のエントリを追加します:

Return+Ctrl-> \E[20;5~

次に、bindkey '\e[20;5~' autosuggest-executeまたはその他のシンクを~/.zshrcに追加します。

1
rudib