Tkinterに、すべてのキーボードレイアウトで機能するキーの組み合わせをバインドする方法はありますか?(スキャンコードでバインド)
たとえば、次のようなすべてのレイアウトで、キーボードの左下隅にある同じ'Control-Z'
物理キーで機能するバインディングが必要です。
*ロシア語のレイアウト、
*ギリシャ語のレイアウトなど。
これが私が試したことです:
from Tkinter import *
root=Tk()
def f(event):
print 'undo'
button1=Button(root, text=u'Button')
button1.pack()
button1.bind('<Control-z>', f)
root.mainloop()
ロシア語とギリシャ語のキーボードレイアウトでは機能しません。
アップデート-2:
私はWindowsでさらにいくつかの実験を行いましたが、今では一般的なルールは次のようになっています。
1)言語がラテン文字セットに基づいている場合、キーは「値によって」(ドイツ語、フランス語、Dvorak)マップされるため、同じアクションが異なる物理キーにマップされます。
2)そうでない場合(たとえば、 ロシア語、ギリシャ語)、すべての主要なアクセラレータは「位置ごとに」マッピングされます(通常、同じキーにマークされている対応する英語の文字と一致します)。
2番目のケースのみに特別な注意が必要です。これがすでにいくつかのライブラリに実装されている場合、何かアイデアはありますか?
アップデート-3
ロシア語のキーボードやロシア語のWindowsがなくても簡単に再現できます。
1)[スタート]->[コントロールパネル]->[地域と言語のオプション]
2)[言語]-> [詳細]
3)ロシア語を追加します。
それでおしまい。これで、Alt-Shiftがロシア語に切り替わり、次の面白い記号を入力できるようになります。
別のAlt-Shiftを押すと元に戻ります。
ウィキペディアがロシア語の表音レイアウトについて言っていることを忘れてください。最近は使われていません。少なくともロシア国内。
すべてのWindowsアプリケーション(wxPythonアプリケーションを含む)はCtrl-я
、元に戻す、Ctrl-ч
切り取り、Ctrl-с
コピーなどに使用します。