Skip to content

Commit 69c345b

Browse files
author
Xerus
committed
Improve GlobalScreen
1 parent e8337e2 commit 69c345b

File tree

1 file changed

+44
-40
lines changed

1 file changed

+44
-40
lines changed

src/java/org/jnativehook/GlobalScreen.java

+44-40
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* JNativeHook: Global keyboard and mouse hooking for Java.
2-
* Copyright (C) 2006-2018 Alexander Barker. All Rights Received.
2+
* Copyright (C) 2006-2018 Alexander Barker. All Rights Received.
33
* https://github.com/kwhat/jnativehook/
44
*
55
* JNativeHook is free software: you can redistribute it and/or modify
@@ -9,11 +9,11 @@
99
*
1010
* JNativeHook is distributed in the hope that it will be useful,
1111
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1313
* GNU General Public License for more details.
1414
*
1515
* You should have received a copy of the GNU Lesser General Public License
16-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1717
*/
1818
package org.jnativehook;
1919

@@ -30,6 +30,7 @@
3030
import java.io.File;
3131
import java.util.Iterator;
3232
import java.util.concurrent.ExecutorService;
33+
import java.util.logging.Level;
3334
import java.util.logging.Logger;
3435

3536
/**
@@ -50,7 +51,13 @@ public class GlobalScreen {
5051
/**
5152
* Logging service for the native library.
5253
*/
53-
protected static Logger log = Logger.getLogger(GlobalScreen.class.getPackage().getName());
54+
protected static Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
55+
static {
56+
logger.setLevel(Level.WARNING);
57+
logger.setUseParentHandlers(false);
58+
}
59+
60+
protected GlobalScreen() { }
5461

5562
/**
5663
* The service to control the hook.
@@ -91,7 +98,7 @@ public class GlobalScreen {
9198
}
9299
catch (Exception e) {
93100
// There was a problem instantiating the library loader.
94-
log.severe(e.getMessage());
101+
logger.severe(e.getMessage());
95102

96103
throw new UnsatisfiedLinkError(e.getMessage());
97104
}
@@ -130,13 +137,10 @@ public class GlobalScreen {
130137
}
131138
}
132139

133-
134-
protected GlobalScreen() { }
135-
136140
/**
137141
* Adds the specified native key listener to receive key events from the
138-
* native system. If listener is null, no exception is thrown and no action
139-
* is performed.
142+
* native system.
143+
* If listener is null, no exception is thrown and no action is performed.
140144
*
141145
* @param listener a native key listener object
142146
*/
@@ -149,8 +153,8 @@ public static void addNativeKeyListener(NativeKeyListener listener) {
149153
/**
150154
* Removes the specified native key listener so that it no longer receives
151155
* key events from the native system. This method performs no function if
152-
* the listener specified by the argument was not previously added. If
153-
* listener is null, no exception is thrown and no action is performed.
156+
* the listener specified by the argument was not previously added.I
157+
* If listener is null, no exception is thrown and no action is performed.
154158
*
155159
* @param listener a native key listener object
156160
*/
@@ -162,8 +166,8 @@ public static void removeNativeKeyListener(NativeKeyListener listener) {
162166

163167
/**
164168
* Adds the specified native mouse listener to receive mouse events from the
165-
* native system. If listener is null, no exception is thrown and no action
166-
* is performed.
169+
* native system.
170+
* If listener is null, no exception is thrown and no action is performed.
167171
*
168172
* @param listener a native mouse listener object
169173
*/
@@ -176,8 +180,8 @@ public static void addNativeMouseListener(NativeMouseListener listener) {
176180
/**
177181
* Removes the specified native mouse listener so that it no longer receives
178182
* mouse events from the native system. This method performs no function if
179-
* the listener specified by the argument was not previously added. If
180-
* listener is null, no exception is thrown and no action is performed.
183+
* the listener specified by the argument was not previously added.
184+
* If listener is null, no exception is thrown and no action is performed.
181185
*
182186
* @param listener a native mouse listener object
183187
*/
@@ -189,8 +193,8 @@ public static void removeNativeMouseListener(NativeMouseListener listener) {
189193

190194
/**
191195
* Adds the specified native mouse motion listener to receive mouse motion
192-
* events from the native system. If listener is null, no exception is
193-
* thrown and no action is performed.
196+
* events from the native system.
197+
* If listener is null, no exception is thrown and no action is performed.
194198
*
195199
* @param listener a native mouse motion listener object
196200
*/
@@ -204,8 +208,8 @@ public static void addNativeMouseMotionListener(NativeMouseMotionListener listen
204208
* Removes the specified native mouse motion listener so that it no longer
205209
* receives mouse motion events from the native system. This method performs
206210
* no function if the listener specified by the argument was not previously
207-
* added. If listener is null, no exception is thrown and no action is
208-
* performed.
211+
* added.
212+
* If listener is null, no exception is thrown and no action is performed.
209213
*
210214
* @param listener a native mouse motion listener object
211215
*/
@@ -217,8 +221,8 @@ public static void removeNativeMouseMotionListener(NativeMouseMotionListener lis
217221

218222
/**
219223
* Adds the specified native mouse wheel listener to receive mouse wheel
220-
* events from the native system. If listener is null, no exception is
221-
* thrown and no action is performed.
224+
* events from the native system.
225+
* If listener is null, no exception is thrown and no action is performed.
222226
*
223227
* @param listener a native mouse wheel listener object
224228
* @since 1.1
@@ -233,8 +237,8 @@ public static void addNativeMouseWheelListener(NativeMouseWheelListener listener
233237
* Removes the specified native mouse wheel listener so that it no longer
234238
* receives mouse wheel events from the native system. This method performs
235239
* no function if the listener specified by the argument was not previously
236-
* added. If listener is null, no exception is thrown and no action is
237-
* performed.
240+
* added.
241+
* If listener is null, no exception is thrown and no action is performed.
238242
*
239243
* @param listener a native mouse wheel listener object
240244
* @since 1.1
@@ -346,25 +350,25 @@ public NativeHookException getException() {
346350
}
347351

348352
/**
349-
* Native implementation to start the input hook. This method blocks and should only be called by this
350-
* specialized thread implementation. This method will notifyAll() after passing any exception exception
353+
* Native implementation to start the input hook. This method blocks and should only be called by this
354+
* specialized thread implementation. This method will notifyAll() after passing any exception exception
351355
* throwing code.
352356
*
353357
* @throws NativeHookException problem registering the native hook with the underlying operating system.
354358
*/
355359
protected native void enable() throws NativeHookException;
356360

357361
/**
358-
* Native implementation to stop the input hook. There is no other way to stop the hook.
362+
* Native implementation to stop the input hook. There is no other way to stop the hook.
359363
*
360364
* @throws NativeHookException problem un-registering the native hook with the underlying operating system.
361365
*/
362366
public native void disable() throws NativeHookException;
363367

364368
/**
365-
* Dispatches an event to the appropriate processor. This method is
369+
* Dispatches an event to the appropriate processor. This method is
366370
* generally called by the native library but may be used to synthesize
367-
* native events from Java without replaying them on the native system. If
371+
* native events from Java without replaying them on the native system. If
368372
* you would like to send events to other applications, please use
369373
* {@link #postNativeEvent},
370374
* <p>
@@ -408,7 +412,7 @@ public static void registerNativeHook() throws NativeHookException {
408412
Thread.sleep(250);
409413
}
410414
catch (InterruptedException e) {
411-
log.warning(e.getMessage());
415+
logger.warning(e.getMessage());
412416
break;
413417
}
414418
}
@@ -480,36 +484,36 @@ public static boolean isNativeHookRegistered() {
480484
*
481485
* For both <code>NATIVE_KEY_PRESSED</code> and
482486
* <code>NATIVE_KEY_RELEASED</code> events, the virtual keycode and modifier
483-
* mask are used in the creation of the native event. Please note that some
487+
* mask are used in the creation of the native event. Please note that some
484488
* platforms may generate <code>NATIVE_KEY_PRESSED</code> and
485489
* <code>NATIVE_KEY_RELEASED</code> events for each required modifier.
486490
* <code>NATIVE_KEY_TYPED</code> events will first translate the associated
487491
* keyChar to its respective virtual code and then produce a
488492
* <code>NATIVE_KEY_PRESSED</code> followed by a <code>NATIVE_KEY_RELEASED</code>
489-
* event using that virtual code. If the JNativeHook is unable to translate
493+
* event using that virtual code. If the JNativeHook is unable to translate
490494
* the keyChar to its respective virtual code, the event is ignored.
491495
* <p>
492496
*
493497
* <code>NativeMouseEvents</code> are processed in much the same way as the
494-
* <code>NativeKeyEvents</code>. Both <code>NATIVE_MOUSE_PRESSED</code> and
498+
* <code>NativeKeyEvents</code>. Both <code>NATIVE_MOUSE_PRESSED</code> and
495499
* <code>NATIVE_MOUSE_RELEASED</code> produce events corresponding to the
496-
* event's button code. Keyboard modifiers may be used in conjunction with
500+
* event's button code. Keyboard modifiers may be used in conjunction with
497501
* button press and release events, however, they might produce events for each
498-
* modifier. <code>NATIVE_MOUSE_CLICKED</code> events produce a
502+
* modifier. <code>NATIVE_MOUSE_CLICKED</code> events produce a
499503
* <code>NATIVE_MOUSE_PRESSED</code> event followed by a
500504
* <code>NATIVE_MOUSE_RELEASED</code> for the assigned event button.
501505
* <p>
502506
*
503507
* <code>NATIVE_MOUSE_DRAGGED</code> and <code>NATIVE_MOUSE_MOVED</code> events
504-
* are handled identically. In order to produce a <code>NATIVE_MOUSE_DRAGGED</code>
508+
* are handled identically. In order to produce a <code>NATIVE_MOUSE_DRAGGED</code>
505509
* event, you must specify a button modifier mask that contains at least one
506-
* button modifier and assign it to the event. Failure to do so will produce a
510+
* button modifier and assign it to the event. Failure to do so will produce a
507511
* <code>NATIVE_MOUSE_MOVED</code> event even if the event id was set to
508512
* <code>NATIVE_MOUSE_DRAGGED</code>.
509513
* <p>
510514
*
511515
* <code>NATIVE_MOUSE_WHEEL</code> events are identical to
512-
* <code>NATIVE_MOUSE_PRESSED</code> events. Wheel events will only produce
516+
* <code>NATIVE_MOUSE_PRESSED</code> events. Wheel events will only produce
513517
* pressed events and will never produce <code>NATIVE_MOUSE_RELEASED</code>,
514518
* <code>NATIVE_MOUSE_DRAGGED</code> or <code>NATIVE_MOUSE_MOVED</code>
515519
*
@@ -666,9 +670,9 @@ private void processMouseWheelEvent(NativeMouseWheelEvent nativeEvent) {
666670
}
667671

668672
/**
669-
* Set a different executor service for native event delivery. By default,
673+
* Set a different executor service for native event delivery. By default,
670674
* JNativeHook utilizes a single thread executor to dispatch events from
671-
* the native event queue. You may choose to use an alternative approach
675+
* the native event queue. You may choose to use an alternative approach
672676
* for event delivery by implementing an <code>ExecutorService</code>.
673677
* <p>
674678
* <b>Note:</b> Using null as an <code>ExecutorService</code> will cause all

0 commit comments

Comments
 (0)