SKK再入門
OS X に AquaSKK 入れてみた。慣れるまえにやめそうな気がする。
「言って」とか変換するときに悩んでしまうんだよなぁ。あと思ったことを一回単語に分けないと入力できないのは結構つらい (慣れの問題だとは思うけど)。
今 SKK で書いています。なんか C-j で「ひらかな」モードにいかない。なんでだろ。C-g は効く……
z. で三点リーダが入力できるのがいいなぁ。ことえりだと「てん」で変換してた。毎回!!
OS X に AquaSKK 入れてみた。慣れるまえにやめそうな気がする。
「言って」とか変換するときに悩んでしまうんだよなぁ。あと思ったことを一回単語に分けないと入力できないのは結構つらい (慣れの問題だとは思うけど)。
今 SKK で書いています。なんか C-j で「ひらかな」モードにいかない。なんでだろ。C-g は効く……
z. で三点リーダが入力できるのがいいなぁ。ことえりだと「てん」で変換してた。毎回!!
さがしたけどないっぽいんだよなぁ。カーネル付近でいぢる特定用途のはあって、それ改造すればできそうな気もするけど、デバッグが大変そうで手がでない。
検索したらすぐに script 要素を挿入した時点で処理とまるってでてきてくれて流石だと思った。
コールバック関数は script 要素を挿入する前に書かないと
そんなに打てないわけじゃないかも。結構普通に使えてる、、気がする。やっぱ送りがな間違えて失敗するけど……
これで補完候補がガンガン表示されてガンガン補完できたらいいのになぁ。って思ったけどそれなんて PRIME って感じもする。
require 'rubygems'
require 'rubyclr'
reference 'System'
reference 'System.Drawing'
reference 'System.Windows.Forms'
include System::Drawing
include System::Drawing::Drawing2D
include System::Windows::Forms
# Timer 付き Form のセットアップ
Application.enable_visual_styles
Application.set_compatible_text_rendering_default false
form = Form.new
form.StartPosition = FormStartPosition::CenterScreen
form.Text = "><ノ"
form.Size = Size.new(120, 0)
timer = Timer.new
timer.Interval = 50
timer.Enabled = true
# ManagedDirectX Input # DirectX SDK が必要
reference 'Microsoft.DirectX'
reference 'Microsoft.DirectX.DirectInput'
include Microsoft::DirectX
include Microsoft::DirectX::DirectInput
joystick = nil
devices = Manager.GetDevices(DeviceClass::GameControl, EnumDevicesFlags::AttachedOnly)
while devices.MoveNext
joystick = Device.new(devices.Current.InstanceGuid)
break
end
joystick.Properties.AxisModeAbsolute = true
joystick.SetCooperativeLevel(form, CooperativeLevelFlags::NonExclusive | CooperativeLevelFlags::Background)
joystick.Acquire
prev = ''
timer.Tick do |sender, args|
state = joystick.CurrentJoystickState
on = []
state.GetButtons.each_with_index do |b,i|
on << i if b.nonzero?
end
out = "X:%s, Y:%s, Z:%s, Buttons:%p" % [state.X, state.Y, state.Z, on]
unless prev == out
puts out
prev = out
end
end
Application.run formManagedDirectX とかいうらしい。
http://web.sfc.keio.ac.jp/~t03792sh/archives/2005/10/manageddirectxj.html を参考にした。
どうも Enumerable なやつがうまくいかなくて困った。.each とか使えるはずなんだけど、エラーがでて使えない。しかたないので普通のイテレータ使ってる。
あと joystick.Objects をイテレータでまわしてると Ruby オブジェクトに変換できないだかなんだかで落ちてしまうのでそこは書いてない。どうするんだろ。
SDL のほうが簡単そう。
require 'sdl'
SDL.init(SDL::INIT_JOYSTICK)
SDL::Joystick.num.times do |i|
p SDL::Joystick.index_name(i)
end
j = SDL::Joystick.open(0)
p j.num_axes
p j.num_buttons
p j.num_balls
p j.num_hats
prev = nil
loop do
SDL::Joystick.update_all
out = ''
j.num_axes.times do |i|
out << "%d:%06d " % [i, j.axis(i)]
end
j.num_hats.times do |i|
state = j.hat(i)
ret = [0, 0] # x, y
case state
when SDL::Joystick::HAT_CENTERED
ret = [0, 0]
when SDL::Joystick::HAT_UP
ret = [0, 1]
when SDL::Joystick::HAT_RIGHT
ret = [1, 0]
when SDL::Joystick::HAT_DOWN
ret = [0, -1]
when SDL::Joystick::HAT_LEFT
ret = [-1, 0]
when SDL::Joystick::HAT_RIGHTUP
ret = [1, 1]
when SDL::Joystick::HAT_RIGHTDOWN
ret = [1, -1]
when SDL::Joystick::HAT_LEFTUP
ret = [-1, 1]
when SDL::Joystick::HAT_LEFTDOWN
ret = [-1, -1]
end
out << ret.inspect
end
out << (0..j.num_buttons).select {|i| j.button(i) }.map {|i| i + 1}.inspect
unless prev == out
puts out
prev = out
end
sleep 0.1
end全然こっちのほうが簡単だなぁ。フォースフィードバック使えないのがちょっと寂しいかもしれない。
あと hat の返す値がちょっとめんどい。上のでは PyGame like にしてみた
なんで joystick とかいぢっていたかというとマウスを動かしたかったからなのです。そういうツールってあるにはあるのだけれど、いまいち挙動が気にいるのがないので書きたかった。
でとりあえず移動とクリックできるところまでつくってみた。ソースがダサい。
http://lab.lowreal.net/trac/browser/c/util/initj.rb
Windows でコピーした内容が反映されないんだよなぁ。逆方向 (Mac -> Windows) はちゃんといけるのに
jjjj ←ダウナーな気分、の意味
どうよ(どうよ?)
類似の物
Safari だと null がかえってくる。。
というか alternate style が styleSheetsList に含まれてない