더블 클릭 지연 시간

feanor의 이미지

클릭을 두 번 빠르게 하는 것을 더블 클릭이라고 합니다. 그러면 얼마나 빨리 해야 더블 클릭으로 인식되는 걸까요? 더블 클릭의 지연 시간은 보통 사용자가 설정할 수 있으며, 위키백과의 더블 클릭 항목을 보면 윈도, 맥, 그놈 데스크탑에서 지연 시간을 설정하는 방법이 소개되어 있습니다.

만약 자신이 더블 클릭을 직접 구현하려고 하는데, 더블 클릭의 지연 시간이 사용자가 시스템에서 설정한 값과 같도록 이 값을 읽어오려면 어떻게 해야 할까요?

(Java Swing 프로그램에 시스템에서 설정한 지연 시간이 적용되지 않는 문제에 대한 고민이 http://ypshin.com/425 에 보입니다.)

윈도에서는 user32.dllGetDoubleClickTime 함수가 있고 아래 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로 이 값을 읽을 수 있는지 아시는 분은 알려주세요.

댓글

cwryu의 이미지

그놈 데스크탑

$ gconftool --get /desktop/gnome/peripherals/mouse/double_click
400
$

lifthrasiir의 이미지

맥 오에스 텐에서는,

$ defaults read 'Apple Global Domain' com.apple.mouse.doubleClickThreshold
1.4

또는 Carbon의 GetDblTime()을 써도 된다고 한다 합니다.

HotPotato의 이미지

검색해 본 결과, 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~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.