4

そんな基本的な質問ですが、検索しても何も見つからなかったのでびっくりしました...

とにかく、私は特定のDSiWareゲームのパズルを解くのを助けるPythonでcursesアプリを作りました。これを使用すると、パズルを解いて、そのコンポーネントを個別に調べることができます。キーqweasdzxはタイルをペイントするために使用されます(キーはある種のパレットに配置されます)。Shiftキーを押しながらこれらのキーのいずれかを押すと、その色のタイルが強調表示されます。これ以上自然な制御方式を求めることはできませんでした。

ですから、もう一度、Shiftが私に問題を与えているのは残念です(前回Shiftで問題が発生したとき、私はタンブルウィードのバッジを獲得しました)。今回は、問題は多かれ少なかれCaps Lockであり、機能を逆にすることでプログラムを完全に台無しにしてしまいます。

呪いを使ってPythonでCapsLockの状態を検出するにはどうすればよいですか?

編集:別のモジュールを使用することを提案する場合は、おそらく、curses(したがって私のプログラム)はUNIXの領域にあることを思い出してください。

4

2 に答える 2

7

私は自分で解決策を見つけました:

cursesは、ΤΖΩΤΖΙΟΥによるCaps Lock設定を完全に認識していないため、別の解決策を試しました。具体的には、BASHスクリプトでCapsLockを確認する方法を調べました。私が見つけたのはこれでした:

Linuxのみ。XWindowSystemが必要です。

$ xset q | grep LED
>  auto repeat:  on    key click percent:  0    LED mask:  00000000

その出力の最後の0(文字列の66番目の文字)は、CapsLockフラグです。オンの場合は1、オフの場合は0。

Pythonは、Linuxのみのコマンドモジュールを使用してUNIXシステムコマンドを実行できます。コマンドは呪いを妨害するようには見えません。

>>> import commands
>>> # Caps Lock is off.
>>> commands.getoutput("xset q | grep LED")[65]
'0'
>>> # Setting Caps Lock on now.
>>> commands.getoutput("xset q | grep LED")[65]
'1'

これは私にとってはうまくいきます。これは個人使用のスクリプトであり、私のプログラムがまだLinux専用ではなかったわけではありません。しかし、誰かが別の、よりWindows互換のソリューションを持っていることを願っています。

私は今のところこの自己回答を受け入れるつもりですが、誰か他の人がより良い解決策を思い付くことができれば、私はそれを見たいと思います。

于 2010-07-09T00:40:37.787 に答える
3
于 2010-07-08T23:33:00.370 に答える