使用されるショートカットは問題ありません

使用されるショートカットは問題ありません

〜2年間、Super特定のキーボードショートカットを実行するためにそのキー(Windowsキーとも呼ばれる)を使用できないようです。

kde、gnome、xfce4を使ってみましたが、それらのどれも完全には機能しませんでした。

Superたとえば、+で割り当てられた日付を入力するのと同じように、日付を入力するキーボードショートカットがあります。aこのキーを押すと何も起こりません。

コマンドラインはbash -c 'xvkbd -xsendevent -text $(date +%Y%m%d)'xfce4デフォルト設定で正しく設定されました。

私は現在、カーネル4.15.1-2-ARCHでArchlinux x86_64を使用しています。

何が起こるのか知っている人はいますか?どこ?解決策はありますか?解決策?

答え1

使用されるショートカットは問題ありません

bash …xtermコマンドを(または他のグラフィックアプリケーション)に置き換えると、キーボードショートカットが正常に設定されていることを確認できます。ウィンドウが表示されたら、ショートカットが正しく設定されています。代わりに、問題はほぼ確実に必須コマンドです。

bash -c 'xvkbd -xsendevent -text $(date +%Y%m%d)'

私の経験XSendEventでは、使用することは信頼できません。1これが 問題の原因である可能性があります。xdotool1つを使用すると、XTESTとの間で選択できますXSendEvent。通常、電子は私に適しています。同様のオプションがありますxvkbd

キーシーケンスを送信するときに必要なシーケンスが送信されるようにするには、現在の修飾子を消去する必要があります(たとえば、+、+などではtestありません)。SupertSupere

また、xdotoolイベントをすばやく送信すると、消える奇妙な動作が1つ以上あります。2これは実際にはXサーバーのドロップイベントでも、まったく異なる状況でもかまいません。とにかく、xdotoolこの問題解決を(少なくとも)延期することができます。

xdotool sleep 0.125 type --clearmodifiers 'string to type'

このサブコマンドには、場合に備えてオプションがtypeあります。--delay初期のドロップイベントを防ぐには遅延が十分ではありません。

要するに

私は次を使うでしょう:

bash -c 'xdotool sleep 0.125 type --clearmodifiers --delay 125 "$(date +%Y%m%d)"'

予想される動作を複製しますが、設定に応じてsleep使用される値を調整する必要があります。--delay

別の可能なオプション

クリップボードを破棄しても構わない場合は、次の基本的なショートカットを送信する方が良い方法ですpaste selection

bash -c 'printf "%s" "$(date +%Y%m%d)" | tee >(xsel -bi) | xsel -i; xdotool sleep 0.125 key --clearmodifiers shift+Insert'

xselこれは、目的のテキストを選択範囲に入れるか、選択範囲から除外するために使用されます(CLIPBOARD一貫性のないテキストを使用するため)。次に、キーシーケンスを合成してこの選択を貼り付けます。 2つの合成キー入力のみが必要なため、他の方法よりもイベントを削除する可能性が低くなります。PRIMARYShiftInsert


1ピースxdotool(1)

イベントメモを送信

特定のウィンドウにキーストロークを送信しようとしても機能しないようであれば、アプリケーションはxdotoolが生成するイベントを無視している可能性があります。これは非常に一般的なことです。

特定のウィンドウにキーストロークを送信することは、単にアクティブウィンドウに入力するのとは異なるAPIを使用します。 「xdotool type --window 12345 hello」を指定すると、xdotool はキーイベントを生成してウィンドウ 12345 に直接送信します。ただし、X11サーバーはこの方法で生成されたすべてのイベントに対して特別なフラグを設定します(手動でX11のXEvent.xany.send_eventを参照)。多くのプログラムがこのフラグを観察し、これらのイベントを拒否します。

キーを押すとマウスイベントの場合は、特定のウィンドウをターゲットにする場合にのみXSendEventを使用することに注意することが重要です。それ以外の場合はXTESTを使用します。

一部のプログラムは、xdotoolによって生成されたイベントでも許可するように設定できます。サポートが必要な場合は、アプリケーションのマニュアルを参照してください。

特定のアプリケーションノート(作成者テストから抜粋):

  • Firefox 3はフォーカスがないときにすべての入力を無視するようです。
  • ctrl+左クリックで実行するときにxtermを設定できます。 「Allow SendEvents」
  • gnome-terminalはデフォルトで生成された入力を許可するようです。

2なぜこれが起こるのかを正確に理解したら、この回答に戻ってこれを詳しく説明します。

関連情報