--.--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2005.08.21

繭tips 第3回

お久しぶりの繭Tipsです。

窓使いの憂鬱には「ワンショットモディファイア」というとても便利な機能があります。

mod Shift = !!Space

この一行で、SpaceキーがShift兼用になります。慣れると手放せない機能なんですが、一つだけ弱点が。ワンショットモディファイアのシフトは、マウスクリックには反応しません。

そこで、窓使いの憂鬱に用意されている別の機能を使って、マウスクリックとも併用できる「SandS」を書いてみます。

#-----
keymap SandS : Global
key R-*Space = &Ignore
key U-*Space = &VK( U-shift ) Space

keymap Global
key D-*Space = &VK( D-shift ) &Prefix( SandS )
key R-*Space = &Ignore
key U-*Space = &VK( U-shift )
#-----

マウスクリックされたかどうか繭には取得判別できないので、スペースキーが
・長く押されたのか(キーリピートがある)
・一瞬押されたのか(キーリピートがない)
だけを見てスペースを送信するかどうかを決めます。

ですから、スペースをしばらく押してから離すと何もしません。また、スペースキーを押してすぐにマウスクリックし、すぐにスペースキーを離したときにはスペースが送信されてしまいます。普通に使う分には特に問題はないと思います。
スペースが押されている間はシフトがかかっていますから、長押ししてから文字キーを押したりマウスクリックしても、もちろんシフトはかかります。スペースキーを単独で長押ししたときだけ、何もしません。

もっと簡潔に書けそうな気もするのですが、とりあえずこれで思った通りに動いているので良しとします(笑)。もっと良い書き方があるぞ、と言う方は是非教えてください。


ちなみに、(第一回でも紹介しましたが)用意されているワンショットモディファイア機能を使った場合でも、
mod shift = !!Space に加えて
key R-*Space = &Ignore
とすることで、「スペースキーを長押ししてから離した場合は何もしない」が出来ます。スペースキーを普通のシフトキーのようにうっかり押してしまうが、間違って押したときはスペースを送信して欲しくない、と言う人は試してみてください。
スポンサーサイト

この記事へのトラックバックURL
http://jisx6004.blog8.fc2.com/tb.php/41-38352660
この記事へのトラックバック
この記事へのコメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。