@@ -85,7 +85,7 @@ public void call() {
8585 * @see SwingObservable.fromKeyEvents(Component, Set)
8686 */
8787 public static Observable <Set <Integer >> currentlyPressedKeysOf (Component component ) {
88- return Observable .< KeyEvent , Set < Integer >> scan ( fromKeyEventsOf ( component ), new HashSet < Integer >(), new Func2 <Set <Integer >, KeyEvent , Set <Integer >>() {
88+ class CollectKeys implements Func2 <Set <Integer >, KeyEvent , Set <Integer >>{
8989 @ Override
9090 public Set <Integer > call (Set <Integer > pressedKeys , KeyEvent event ) {
9191 Set <Integer > afterEvent = new HashSet <Integer >(pressedKeys );
@@ -102,7 +102,16 @@ public Set<Integer> call(Set<Integer> pressedKeys, KeyEvent event) {
102102 }
103103 return afterEvent ;
104104 }
105+ }
106+
107+ Observable <KeyEvent > filteredKeyEvents = fromKeyEventsOf (component ).filter (new Func1 <KeyEvent , Boolean >() {
108+ @ Override
109+ public Boolean call (KeyEvent event ) {
110+ return event .getID () == KeyEvent .KEY_PRESSED || event .getID () == KeyEvent .KEY_RELEASED ;
111+ }
105112 });
113+
114+ return Observable .<KeyEvent , Set <Integer >>scan (filteredKeyEvents , Collections .<Integer >emptySet (), new CollectKeys ());
106115 }
107116
108117 public static class UnitTest {
@@ -158,6 +167,7 @@ public void testObservingPressedKeys() {
158167 verify (complete , never ()).call ();
159168
160169 fireKeyEvent (keyEvent (2 , KeyEvent .KEY_PRESSED ));
170+ fireKeyEvent (keyEvent (KeyEvent .VK_UNDEFINED , KeyEvent .KEY_TYPED ));
161171 inOrder .verify (action , times (1 )).call (new HashSet <Integer >(asList (1 , 2 )));
162172
163173 fireKeyEvent (keyEvent (2 , KeyEvent .KEY_RELEASED ));
0 commit comments