Python の呪いで Caps Lock を検出する
質問
このような基本的な質問について、検索しても何も見つからないことに驚いています...
とにかく、私は Python で、特定の DSiWare ゲームのパズルを解くのを支援する Curses アプリを作成しました。これを使用すると、パズルを取り出して、そのコンポーネントを個別に検査できます。鍵 qweasdzx
タイルをペイントするために使用されます (キーはある種のパレットに配置されます)。Shift キーを押しながらこれらのキーのいずれかを押すと、その色のタイルが強調表示されます。これ以上自然な制御スキームは望めません。
したがって、再び Shift で問題が発生するのは残念です (前回 Shift で問題が発生したとき、私は Tumbleweed バッジを獲得しました)。ただし、今回の問題は多かれ少なかれ Caps Lock にあり、機能を逆にしてプログラムを完全に台無しにしてしまいます。
Python で Curses を使用して Caps Lock の状態を検出するにはどうすればよいですか?
編集:別のモジュールの使用を提案する場合は、curses (つまり私のプログラム) が UNIX 領域にあることを思い出していただく必要があるでしょう。
解決
私は自分の解決策を見つけました:
呪いはτέωτήιοςに準拠したキャップロック設定に完全に気付いていないので、代替ソリューションを試してみました。具体的には、BashスクリプトでCAPSロックをチェックする方法を調べました。私が見つけたものはこれでした:
Linuxのみ。 Xウィンドウシステムが必要です。
$ xset q | grep LED
> auto repeat: on key click percent: 0 LED mask: 00000000
.
その出力の最後の0(文字列内の66文字)はCAPSロックフラグです。 1がオンの場合は、0がオフの場合は0。
Pythonは、Linux only コマンドモジュール。コマンドは呪文を妨害するようには見えません。
>>> 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-Exclusiveではなかったのではありません。しかし、私は誰かが別の、よりウィンドウズ互換の解決策を持っていることを願っています。
今のところこの自己答えを受け入れるつもりですが、他の誰かがより良い労働ソリューションを思いつくことができれば、それを見たいのですが。
他のヒント
短い答え:あなたはできません。
さらに長い答え:
Curses は、使用する端末に関係なく文字ベースの UI を簡単に作成できるようにする terminfo ベースのライブラリとして作成されました (for terminal in 'vt220', 'wyse100', …
).
これらの端末はシリアル回線を介して接続され、ホストとの通信はプレーン テキスト (ユーザーによる入力またはホストによる出力) または特別なシーケンス (「エスケープ」シーケンス;特殊キーが押された場合にユーザーが入力したもの。 ↑ または 前へ, 、または、カーソルの位置決めや画面のクリアなどの特別な操作が要求された場合はホストによって出力されます)。
知識がありません どれでも Caps Lock キーが押されるたびに特別なシーケンスを送信するダム端末、または Caps Lock ステータスを問い合わせるホスト。大文字のロックはターミナルの仕事の一部であり、ホストには何の知識も必要ありませんでした。これは、Ctrl キーが単独で押されたときに、curses プログラムを動作させることができない理由と似ています。
呪いに関するすべてのことは、 用語情報 能力;あなたが求めているものに関連する機能はありません。