Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Nie 21 Lut, 2010 16:42
Dodatkowe przyciski na klawiaturze
~ Dodatkowe przyciski na klawiaturze [VX] ~
KrĂłtki opis
Skrypt umoĹźliwia wykorzystanie innych przyciskĂłw na klawiaturze niĹź domyĹlne. MoĹźna przykĹadowo wykorzystaÄ literkÄ 'L', ktĂłra normalnie, nie odpowiada za nic. Skrypt jest jedynie dodatkiem, ale dziÄki niemu moĹźna wspomniane literki wykorzystaÄ z innych skryptach.
State = Win32API.new('user32','GetKeyState',['i'],'i')
Key = Win32API.new('user32','GetAsyncKeyState',['i'],'i')
USED_KEYS = [Mouse_Left, Mouse_Right]
module_function
def self.getstate(key)
return true unless State.call(key).between?(0, 1)
return false
end
def self.testkey(key)
Key.call(key) & 0x01 == 1
end
def self.update
@keys = []
@keys.push(Input::Mouse_Left) if self.testkey(Input::Mouse_Left)
@keys.push(Input::Mouse_Right) if self.testkey(Input::Mouse_Right)
@keys.push(Input::Back) if self.testkey(Input::Back)
@keys.push(Input::Tab) if self.testkey(Input::Tab)
@keys.push(Input::Enter) if self.testkey(Input::Enter)
@keys.push(Input::Shift) if self.testkey(Input::Shift)
@keys.push(Input::Ctrl) if self.testkey(Input::Ctrl)
@keys.push(Input::Alt) if self.testkey(Input::Alt)
@keys.push(Input::Esc) if self.testkey(Input::Esc)
for key in Input::Letters.values
@keys.push(key) if self.testkey(key)
end
for key in Input::Numberkeys.values
@keys.push(key) if self.testkey(key)
end
for key in Input::Numberpad.values
@keys.push(key) if self.testkey(key)
end
for key in Input::Fkeys.values
@keys.push(key) if self.testkey(key)
end
@keys.push(Input::Collon) if self.testkey(Input::Collon)
@keys.push(Input::Equal) if self.testkey(Input::Equal)
@keys.push(Input::Comma) if self.testkey(Input::Comma)
@keys.push(Input::Underscore) if self.testkey(Input::Underscore)
@keys.push(Input::Dot) if self.testkey(Input::Dot)
@keys.push(Input::Backslash) if self.testkey(Input::Backslash)
@keys.push(Input::Lb) if self.testkey(Input::Lb)
@keys.push(Input::Rb) if self.testkey(Input::Rb)
@keys.push(Input::Quote) if self.testkey(Input::Quote)
@keys.push(Input::Space) if self.testkey(Input::Space)
@keys.push(Input::LT) if self.testkey(Input::LT)
@keys.push(Input::UPs) if self.testkey(Input::UPs)
@keys.push(Input::RT) if self.testkey(Input::RT)
@keys.push(Input::DN) if self.testkey(Input::DN)
@pressed = []
@pressed.push(Input::Space) if self.getstate(Input::Space)
@pressed.push(Input::Mouse_Left) if self.getstate(Input::Mouse_Left)
@pressed.push(Input::Mouse_Right) if self.getstate(Input::Mouse_Right)
@pressed.push(Input::Back) if self.getstate(Input::Back)
@pressed.push(Input::Tab) if self.getstate(Input::Tab)
@pressed.push(Input::Enter) if self.getstate(Input::Enter)
@pressed.push(Input::Shift) if self.getstate(Input::Shift)
@pressed.push(Input::Ctrl) if self.getstate(Input::Ctrl)
@pressed.push(Input::Alt) if self.getstate(Input::Alt)
@pressed.push(Input::Esc) if self.getstate(Input::Esc)
@pressed.push(Input::LT) if self.getstate(Input::LT)
@pressed.push(Input::UPs) if self.getstate(Input::UPs)
@pressed.push(Input::RT) if self.getstate(Input::RT)
@pressed.push(Input::DN) if self.getstate(Input::DN)
for key in Input::Numberkeys.values
@pressed.push(key) if self.getstate(key)
end
for key in Input::Numberpad.values
@pressed.push(key) if self.getstate(key)
end
for key in Input::Letters.values
@pressed.push(key) if self.getstate(key)
end
for key in Input::Fkeys.values
@pressed.push(key) if self.getstate(key)
end
@pressed.push(Input::Collon) if self.getstate(Input::Collon)
@pressed.push(Input::Equal) if self.getstate(Input::Equal)
@pressed.push(Input::Comma) if self.getstate(Input::Comma)
@pressed.push(Input::Underscore) if self.getstate(Input::Underscore)
@pressed.push(Input::Dot) if self.getstate(Input::Dot)
@pressed.push(Input::Backslash) if self.getstate(Input::Backslash)
@pressed.push(Input::Lb) if self.getstate(Input::Lb)
@pressed.push(Input::Rb) if self.getstate(Input::Rb)
@pressed.push(Input::Quote) if self.getstate(Input::Quote)
end
def self.triggerd?(key)
return true if @keys.include?(key)
return false
end
def self.pressed?(key)
return true if @pressed.include?(key)
return false
end
def self.dir4
return 2 if self.pressed?(Input::DN)
return 4 if self.pressed?(Input::LT)
return 6 if self.pressed?(Input::RT)
return 8 if self.pressed?(Input::UPs)
return 0
end
def trigger?(key)
Inputed?(key,"trigger")
end
def repeat?(key)
Inputed?(key,"repeat")
end
def press?(key)
Inputed?(key,"press")
end
def Inputed?(key,type)
keys = []
case key
when Input::DOWN
keys.push(Input::DN)
when Input::UP
keys.push(Input::UPs)
when Input::LEFT
keys.push(Input::LT)
when Input::RIGHT
keys.push(Input::RT)
when Input::A
keys.push(Input::Shift)
when Input::B
keys.push(Input::Esc, Input::Numberpad[0], Input::Letters["X"])
when Input::C
keys.push(Input::Space, Input::Enter)
when Input::L
keys.push(Input::Letters["Q"])
when Input::R
keys.push(Input::Letters["W"])
when Input::X
keys.push(Input::Letters["A"])
when Input::Y
keys.push(Input::Letters["S"])
when Input::Z
keys.push(Input::Letters["D"])
when Input::F5
keys.push(Input::Fkeys[5])
when Input::F6
keys.push(Input::Fkeys[6])
when Input::F7
keys.push(Input::Fkeys[7])
when Input::F8
keys.push(Input::Fkeys[8])
when Input::F9
keys.push(Input::Fkeys[9])
when Input::CTRL
keys.push(Input::Ctrl)
when Input::ALT
keys.push(Input::Alt)
else
keys.push(key)
end
case type
when "trigger"
for k in keys
if Input.triggerd?(k)
return true
end
end
when "repeat"
for k in keys
if Input.triggerd?(k)
return true
end
end
when "press"
for k in keys
if self.pressed?(k)
return true
end
end
end
return false
end
def check(key)
Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1
end
def mouse_update
@used_i = []
for i in USED_KEYS
x = check(i)
if x == true
@used_i.push(i)
end
end
end
def self.name?(num)
return "MOUSE LEFT" if num==1
return "MOUSE RIGHT" if num==2
return "MOUSE MIDDLE" if num==4
return "MOUSE 4TH" if num==5
return "MOUSE 5TH" if num==6
return "BACKSPACE" if num==8
return "TAB" if num==9
return "RETURN" if num==13
return "SHIFT" if num==16
return "CTLR" if num==17
return "ALT" if num==18
return "CAPS LOCK" if num==20
return "ESCAPE" if num==27
return "SPACE" if num==32
return "PGUP" if num==33
return "PGDN" if num==34
return "END" if num==35
return "HOME" if num==36
return "LEFT" if num==37
return "UP" if num==38
return "RIGHT" if num==39
return "DOWN" if num==40
return "SNAPSHOT" if num==44
return "INSERT" if num==45
return "DELETE" if num==46
return "0" if num==48
return "1" if num==49
return "2" if num==50
return "3" if num==51
return "4" if num==52
return "5" if num==53
return "6" if num==54
return "7" if num==55
return "8" if num==56
return "9" if num==57
return "A" if num==65
return "B" if num==66
return "C" if num==67
return "D" if num==68
return "E" if num==69
return "F" if num==70
return "G" if num==71
return "H" if num==72
return "I" if num==73
return "J" if num==74
return "K" if num==75
return "L" if num==76
return "M" if num==77
return "N" if num==78
return "O" if num==79
return "P" if num==80
return "Q" if num==81
return "R" if num==82
return "S" if num==83
return "T" if num==84
return "U" if num==85
return "V" if num==86
return "W" if num==87
return "X" if num==88
return "Y" if num==89
return "Z" if num==90
return "LWIN" if num==91
return "RWIN" if num==92
return "APPS" if num==93
return "0" if num==96
return "1" if num==97
return "2" if num==98
return "3" if num==99
return "4" if num==100
return "5" if num==101
return "6" if num==102
return "7" if num==103
return "8" if num==104
return "9" if num==105
return "*" if num==106
return "+" if num==107
return "-" if num==109
return "." if num==110
return "/" if num==111
return "F1" if num==112
return "F2" if num==113
return "F3" if num==114
return "F4" if num==115
return "F5" if num==116
return "F6" if num==117
return "F7" if num==118
return "F8" if num==119
return "F9" if num==120
return "F10" if num==121
return "F11" if num==122
return "F12" if num==123
return "NUM LOCK" if num==144
return "SCROLL LOCK" if num==145
return "LEFT SHIFT" if num==160
return "RIGHT SHIFT" if num==161
return "LEFT CTRL" if num==162
return "RIGHT CTRL" if num==163
return "LEFT ALT" if num==164
return "RIGHT ALT" if num==165
return ";" if num==186
return "=" if num==187
return "," if num==188
return "_" if num==189
return "." if num==190
return "/" if num==191
return "`" if num==192
return "[" if num==219
return " \\ " if num==220
return "]" if num==221
return "'" if num==222
return "??? - " + "#{num}"
end
end
Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
Po pierwsze, do hasha Numberkeys wpisujesz zwykĹe liczby (1), nie stringi ("1"). Po drugie, caĹoĹÄ obejmij 'Input.trigger?(...)', ktĂłre sprawdza, czy przycisk jest wciĹniÄty.
TwĂłj warunek w edytorze zdarzeĹ bÄdzie wyglÄ daĹ tak:
Kod:
Input.trigger?(Input::Numberkeys[1])
@edit: wyprzedziĹeĹ mnie...! :)
SprawdziĹem pod xp, dziaĹa. Fajny skrypt, krĂłtszy i wygodniejszy niĹź keyboard input module cybersama, ktĂłrego uĹźywaĹem do tej pory.
Dołączył: 28 Maj 2010 Posty: 18 Skąd: Zielona GĂłra
Wysłany: Wto 01 Cze, 2010 12:59
ZrobiĹem wszystko wedĹug instrukcji, jednak przy prĂłbie uruchomienia projektu wyskakuje mi bĹÄ d:
"WystÄ piĹ problem z aplikacjÄ Game.exe(...)" itd. Czy ktoĹ wie czym to moĹźe byÄ spowodowane?
Dołączył: 28 Maj 2010 Posty: 18 Skąd: Zielona GĂłra
Wysłany: Wto 01 Cze, 2010 13:32
UsunÄ Ĺem skrypt i wszystko zaczÄĹo dziaĹaÄ, gdy wstawiĹem go ponownie bĹÄ d znowu siÄ pojawiĹ. WiÄc jest to wina skryptu o dziwo :/ Czy to moĹźe mieÄ coĹ wspĂłlnego z tym Ĺźe posiadam makera xp tsukuru? MoĹźe mam starego rgssa w windowsie?
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum