Shiftキーを使用して大文字を入力することはできません

Shiftキーを使用して大文字を入力することはできません

一部のアプリケーションでは、大文字の入力がESCキーを押すのと同じです。

再現:

  • LibreOfficeドキュメントを開く
  • 名前を付けて保存を選択する(Unityダイアログ)
  • 「フォルダの作成」をクリック
  • 大文字を入力するには、Shiftキーを使用します(例:Shift + A)。

この時点で、新しいフォルダの作成はキャンセルされます。 (ESCキーを押すのと同じ)

この動作は、さまざまなプログラムやゲームにも存在します。

xev(Shift + dを押す)を使用して状況を分析します。

# xev
KeyPress event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 994702, (15,-13), root:(987,197),
    state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

FocusOut event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  89  0   0   0   0   1   4   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyPress event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 994927, (15,-13), root:(987,197),
    state 0x11, keycode 40 (keysym 0x44, D), same_screen YES,
    XLookupString gives 1 bytes: (44) "D"
    XmbLookupString gives 1 bytes: (44) "D"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 995062, (15,-13), root:(987,197),
    state 0x11, keycode 40 (keysym 0x44, D), same_screen YES,
    XLookupString gives 1 bytes: (44) "D"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 995395, (15,-13), root:(987,197),
    state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

私の考えでは、これらのFocusOut出来事はFocusIn疑わしいようです。

Linux:Ubuntu 14.04 LTS 32ビット、Unity

システムをどのように修正しますか?どんなアイデアや追加テストも歓迎します!

編集:ソリューション

私は言語変換をLeftShift + RightShiftに設定したことがあります。このアプローチは長年にわたって効果がありましたが、ある時点で問題になりました。とにかく、設定を別のキーの組み合わせに切り替えることで問題が解決しました。

ベストアンサー1

FocusOut event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyUngrab, detail NotifyAncestor

A長押しするとShiftどうなりますか?パッシブクロール:このキーの組み合わせを排他的に制御するXクライアントが1つあり、キーの組み合わせを押すとイベントはそのクライアントにのみルーティングされ、xev他の人にはルーティングされません。xevキーの組み合わせが発生したときに保持し、キーの組み合わせが完了したら、それらをキャンセルするようにクライアントに報告します。

Shift一般人の観点から、+をAグローバルキーバインディングとして定義するプログラムがあります。これはおそらく誤字です。バインディングShift++または++何かを意味しました。AltkeyWinShiftA

存在するコマンドラインでXキーとポインタをキャッチします。私はホットテイカーを見つける方法を尋ねました。私が見つけた最良のアプローチはアクティブなクロールに関するレポートのみを報告するので、情報を照会するときにキーを押す必要があります。

  1. インストールするxdoツールまだしていないなら。
  2. ランニングsleep 1; xdotool key XF86LogGrabInfo
  3. Shift1秒以内に+を押し続けますA。実行されるまで待ちますxdotool
  4. クロールの詳細については、Xサーバーのログを確認してください。 Xサーバーログの一般的な場所は次のとおりです/var/log/Xorg.0.log(表示番号の反映、つまり0if isまたはthen Look atなどの数字)。$DISPLAY$DISPLAY:1:1.0/var/log/Xorg.1.log

以下は、私が押したキーがSawfishで定​​義されたキーバインディングであることを示すいくつかのサンプル出力です。

[2292688.331] Active grab 0x41602244 (core) on device 'Virtual core keyboard' (3):
[2292688.331]       client pid 6745 sawfish 
[2292688.331]       at 2292687547 (from passive grab) (device thawed, state 3)
[2292688.331]         core event mask 0x3
[2292688.331]       passive grab type 2, detail 0x4e, activating key 78
[2292688.331]       owner-events false, kb 0 ptr 0, confine 0, cursor 0x0
[2292688.331] (II) End list of active device grabs

おすすめ記事