浏览代码

Fixes to keyboard modifier handling.

Mark Sibly 8 年之前
父节点
当前提交
96e80e3a9c
共有 2 个文件被更改,包括 5 次插入9 次删除
  1. 3 3
      modules/mojo/app/app.monkey2
  2. 2 6
      modules/mojo/input/keyboard.monkey2

+ 3 - 3
modules/mojo/app/app.monkey2

@@ -711,8 +711,8 @@ Class AppInstance
 
 			_key=Keyboard.KeyCodeToKey( Int( kevent->keysym.sym ) )
 			_rawKey=Keyboard.ScanCodeToRawKey( Int( kevent->keysym.scancode ) )
-			_modifiers=Cast<Modifier>( kevent->keysym.mod_ )
 			_keyChar=Keyboard.KeyName( _key )
+			_modifiers=Keyboard.Modifiers
 			
 			If kevent->repeat_
 				SendKeyEvent( EventType.KeyRepeat )
@@ -729,11 +729,11 @@ Class AppInstance
 			
 			_key=Keyboard.KeyCodeToKey( Int( kevent->keysym.sym ) )
 			_rawKey=Keyboard.ScanCodeToRawKey( Int( kevent->keysym.scancode ) )
-			_modifiers=Cast<Modifier>( kevent->keysym.mod_ )
 			_keyChar=Keyboard.KeyName( _key )
+			_modifiers=Keyboard.Modifiers
 			
 			SendKeyEvent( EventType.KeyUp )
-
+			
 		Case SDL_TEXTINPUT
 		
 			Local tevent:=Cast<SDL_TextInputEvent Ptr>( event )

+ 2 - 6
modules/mojo/input/keyboard.monkey2

@@ -40,7 +40,7 @@ Class KeyboardDevice Extends InputDevice
 	#rem monkeydoc The current state of the modifier keys.
 	#end
 	Property Modifiers:Modifier()
-		Return _modifiers
+		Return Cast<Modifier>( Int( SDL_GetModState() ) )
 	End
 
 	#rem monkeydoc Gets the name of a key.
@@ -250,8 +250,6 @@ Class KeyboardDevice Extends InputDevice
 				_keys[scode].rpressed=_frame
 			Endif
 			
-			_modifiers=Cast<Modifier>( kevent->keysym.mod_ )
-			
 			Local char:=KeyToChar( _scan2key[scode] )
 			If char PushChar( char )
 
@@ -263,7 +261,6 @@ Class KeyboardDevice Extends InputDevice
 			
 			_keys[scode].down=False
 			_keys[scode].released=_frame
-			_modifiers=Cast<Modifier>( kevent->keysym.mod_ )
 			
 		Case SDL_TEXTINPUT
 		
@@ -289,7 +286,6 @@ Class KeyboardDevice Extends InputDevice
 
 	Field _frame:Int=1
 	Field _keys:=New KeyState[512]
-	Field _modifiers:Modifier
 	Field _charQueue:=New Int[CHAR_QUEUE_SIZE]
 	Field _charPut:Int
 	Field _charGet:Int
@@ -302,7 +298,7 @@ Class KeyboardDevice Extends InputDevice
 
 	Method New()
 	End
-
+	
 	Function KeyToChar:Int( key:Int )
 		Select key
 		Case Key.Backspace,Key.Tab,Key.Enter,Key.Escape,Key.KeyDelete