더블 클릭 지연 시간
클릭을 두 번 빠르게 하는 것을 더블 클릭이라고 합니다. 그러면 얼마나 빨리 해야 더블 클릭으로 인식되는 걸까요? 더블 클릭의 지연 시간은 보통 사용자가 설정할 수 있으며, 위키백과의 더블 클릭 항목을 보면 윈도, 맥, 그놈 데스크탑에서 지연 시간을 설정하는 방법이 소개되어 있습니다.
만약 자신이 더블 클릭을 직접 구현하려고 하는데, 더블 클릭의 지연 시간이 사용자가 시스템에서 설정한 값과 같도록 이 값을 읽어오려면 어떻게 해야 할까요?
(Java Swing 프로그램에 시스템에서 설정한 지연 시간이 적용되지 않는 문제에 대한 고민이 http://ypshin.com/425 에 보입니다.)
윈도에서는 user32.dll
에 GetDoubleClickTime
함수가 있고 아래 MSDN 문서에 문서화되어 있습니다. 지연 시간을 밀리초로 반환합니다.
http://msdn2.microsoft.com/en-us/library/ms646258.aspx
Qt에서는 QApplication
클래스에 doubleClickInterval
메소드가 있습니다. Qt 3와 Qt 4 동일합니다.
http://doc.trolltech.com/3.3/qapplication.html#doubleClickInterval
http://doc.trolltech.com/4.3/qapplication.html#doubleClickInterval-prop
문서에 따르면, X11에서는 400밀리초가 기본값이고, 윈도(Qt 3/4)와 맥(Qt 4)에서는 운영체제의 값을 사용한다고 합니다.
Gtk에서는 GtkSettings
클래스에 gtk-double-click-time
속성으로 저장됩니다. 기본값이 250밀리초라고 되어 있습니다.
http://library.gnome.org/devel/gtk/2.12/GtkSettings.html#GtkSettings--gtk-double-click-time
아테나, 모티프 위젯 등이 사용하던 Xt(X Toolkit)의 매뉴얼에는 XtGetMultiClickTime
이라는 함수가 보입니다.
http://linux.die.net/man/3/xtgetmulticlicktime
Gtk, Qt, Xt가 제각각이라면 예컨대 그놈에서 설정한 더블 클릭 지연 시간이 KDE 응용프로그램에 적용되지 않을 것입니다. 툴킷에 상관 없이 X 서버 전체에 더블 클릭 지연 시간과 같은 설정을 공유하는 방법이 아직은 제대로 없어 보입니다. freedesktop.org에 XSETTINGS
라는 명세가 있기는 합니다. 키 이름은 Net/DoubleClickTime
입니다.
http://www.freedesktop.org/wiki/Specifications/xsettings-spec
맥에서 어떤 API로 이 값을 읽을 수 있는지 아시는 분은 알려주세요.
댓글
그놈 데스크탑 $
그놈 데스크탑
$ gconftool --get /desktop/gnome/peripherals/mouse/double_click
400
$
맥 오에스
맥 오에스 텐에서는,
또는 Carbon의 GetDblTime()을 써도 된다고 한다 합니다.
자바
검색해 본 결과, OS로부터 직접 가져오는 방법은 없습니다.
DesktopProperty 에 직접 설정해주어야 합니다.
Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval"));
javax.swing.AbstractButton (JButton, JMenuItem, JToggleButton) 에서는
setMultiClickThreshhold(long l)로 따로 지정할 수 있고
getMultiClickThreshhold()로 이 값을 가져올 수 있습니다.
참고 :
http://forums.sun.com/thread.jspa?forumID=32&threadID=585358
http://java.sun.com/j2se/1.4.2/docs/guide/swing/1.4/w2k_props.html#input
--
즐 Tux~
댓글 달기