diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 00bb99ac80741fc50ef8a289719373032f2391eb (patch) | |
tree | 3a5a9bf72f942784b38bf77dd66c534662fab5f2 /kbstateapplet | |
download | tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.tar.gz tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaccessibility@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kbstateapplet')
133 files changed, 1620 insertions, 0 deletions
diff --git a/kbstateapplet/Makefile.am b/kbstateapplet/Makefile.am new file mode 100644 index 0000000..23466d9 --- /dev/null +++ b/kbstateapplet/Makefile.am @@ -0,0 +1,24 @@ +INCLUDES = $(all_includes) + +kde_module_LTLIBRARIES = kbstate_panelapplet.la + +kbstate_panelapplet_la_SOURCES = kbstate.cpp + +METASOURCES = AUTO +noinst_HEADERS = kbstate.h kdeexportfix.h + +lnkdir = $(kde_datadir)/kicker/applets +lnk_DATA = kbstateapplet.desktop + +EXTRA_DIST = $(lnk_DATA) + +kbstate_panelapplet_la_LDFLAGS = $(KDE_PLUGIN) -module $(all_libraries) +kbstate_panelapplet_la_LIBADD = $(LIB_KDEUI) + +messages: + $(XGETTEXT) *.cpp *.h -o $(podir)/kbstateapplet.pot + +srcdoc: + kdoc -a -p -H -d $$HOME/web/src/kbstateapplet kbstateapplet *.h -lqt -lkdecore -lkdeui -lkfile + +SUBDIRS = images diff --git a/kbstateapplet/configure.in.in b/kbstateapplet/configure.in.in new file mode 100644 index 0000000..3989388 --- /dev/null +++ b/kbstateapplet/configure.in.in @@ -0,0 +1,23 @@ +# add this here so the test programs below compile +KDE_CHECK_HEADER(X11/Xlib.h) +KDE_CHECK_HEADER(X11/extensions/XKBstr.h, , + DO_NOT_COMPILE="$DO_NOT_COMPILE kbstateapplet", +[ +#include <X11/Xlib.h> +]) + +dnl Solaris lacks this file, so we should skip kbstateapplet here +KDE_CHECK_HEADER(X11/XKBlib.h, , + DO_NOT_COMPILE="$DO_NOT_COMPILE kbstateapplet", +[ +#include <X11/Xlib.h> +]) + +dnl Solaris lacks this file, so we should skip kbstateapplet here +KDE_CHECK_HEADER(X11/extensions/XKB.h, , + DO_NOT_COMPILE="$DO_NOT_COMPILE kbstateapplet", +[ +#include <stdio.h> +#include <X11/Xlib.h> +#include <X11/XKBlib.h> +]) diff --git a/kbstateapplet/images/Makefile.am b/kbstateapplet/images/Makefile.am new file mode 100644 index 0000000..b8ded81 --- /dev/null +++ b/kbstateapplet/images/Makefile.am @@ -0,0 +1,2 @@ +kbstateiconsdir = $(kde_datadir)/kbstateapplet/icons +kbstateicons_ICON = AUTO
\ No newline at end of file diff --git a/kbstateapplet/images/cr16-action-altkey.png b/kbstateapplet/images/cr16-action-altkey.png Binary files differnew file mode 100644 index 0000000..e049c31 --- /dev/null +++ b/kbstateapplet/images/cr16-action-altkey.png diff --git a/kbstateapplet/images/cr16-action-capskey.png b/kbstateapplet/images/cr16-action-capskey.png Binary files differnew file mode 100644 index 0000000..fb98d7b --- /dev/null +++ b/kbstateapplet/images/cr16-action-capskey.png diff --git a/kbstateapplet/images/cr16-action-controlkey.png b/kbstateapplet/images/cr16-action-controlkey.png Binary files differnew file mode 100644 index 0000000..3593fdd --- /dev/null +++ b/kbstateapplet/images/cr16-action-controlkey.png diff --git a/kbstateapplet/images/cr16-action-hyperkey.png b/kbstateapplet/images/cr16-action-hyperkey.png Binary files differnew file mode 100644 index 0000000..da3fc29 --- /dev/null +++ b/kbstateapplet/images/cr16-action-hyperkey.png diff --git a/kbstateapplet/images/cr16-action-kbstate_mouse.png b/kbstateapplet/images/cr16-action-kbstate_mouse.png Binary files differnew file mode 100644 index 0000000..a1121c5 --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_mouse.png diff --git a/kbstateapplet/images/cr16-action-kbstate_mouse_left.png b/kbstateapplet/images/cr16-action-kbstate_mouse_left.png Binary files differnew file mode 100644 index 0000000..59bf8fb --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_mouse_left.png diff --git a/kbstateapplet/images/cr16-action-kbstate_mouse_left_selected.png b/kbstateapplet/images/cr16-action-kbstate_mouse_left_selected.png Binary files differnew file mode 100644 index 0000000..40e28d8 --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_mouse_left_selected.png diff --git a/kbstateapplet/images/cr16-action-kbstate_mouse_mid.png b/kbstateapplet/images/cr16-action-kbstate_mouse_mid.png Binary files differnew file mode 100644 index 0000000..c5b9141 --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_mouse_mid.png diff --git a/kbstateapplet/images/cr16-action-kbstate_mouse_mid_selected.png b/kbstateapplet/images/cr16-action-kbstate_mouse_mid_selected.png Binary files differnew file mode 100644 index 0000000..8e7e570 --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_mouse_mid_selected.png diff --git a/kbstateapplet/images/cr16-action-kbstate_mouse_right.png b/kbstateapplet/images/cr16-action-kbstate_mouse_right.png Binary files differnew file mode 100644 index 0000000..673495b --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_mouse_right.png diff --git a/kbstateapplet/images/cr16-action-kbstate_mouse_right_selected.png b/kbstateapplet/images/cr16-action-kbstate_mouse_right_selected.png Binary files differnew file mode 100644 index 0000000..fb35c27 --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_mouse_right_selected.png diff --git a/kbstateapplet/images/cr16-action-kbstate_slowkeys.png b/kbstateapplet/images/cr16-action-kbstate_slowkeys.png Binary files differnew file mode 100644 index 0000000..ebda302 --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_slowkeys.png diff --git a/kbstateapplet/images/cr16-action-kbstate_stickykeys.png b/kbstateapplet/images/cr16-action-kbstate_stickykeys.png Binary files differnew file mode 100644 index 0000000..744802d --- /dev/null +++ b/kbstateapplet/images/cr16-action-kbstate_stickykeys.png diff --git a/kbstateapplet/images/cr16-action-key.png b/kbstateapplet/images/cr16-action-key.png Binary files differnew file mode 100644 index 0000000..55b8c22 --- /dev/null +++ b/kbstateapplet/images/cr16-action-key.png diff --git a/kbstateapplet/images/cr16-action-keypressno.png b/kbstateapplet/images/cr16-action-keypressno.png Binary files differnew file mode 100644 index 0000000..ed3b5a5 --- /dev/null +++ b/kbstateapplet/images/cr16-action-keypressno.png diff --git a/kbstateapplet/images/cr16-action-keypressok.png b/kbstateapplet/images/cr16-action-keypressok.png Binary files differnew file mode 100644 index 0000000..040bae2 --- /dev/null +++ b/kbstateapplet/images/cr16-action-keypressok.png diff --git a/kbstateapplet/images/cr16-action-lockkey.png b/kbstateapplet/images/cr16-action-lockkey.png Binary files differnew file mode 100644 index 0000000..f5920e1 --- /dev/null +++ b/kbstateapplet/images/cr16-action-lockkey.png diff --git a/kbstateapplet/images/cr16-action-metakey.png b/kbstateapplet/images/cr16-action-metakey.png Binary files differnew file mode 100644 index 0000000..9537dcd --- /dev/null +++ b/kbstateapplet/images/cr16-action-metakey.png diff --git a/kbstateapplet/images/cr16-action-shiftkey.png b/kbstateapplet/images/cr16-action-shiftkey.png Binary files differnew file mode 100644 index 0000000..f329803 --- /dev/null +++ b/kbstateapplet/images/cr16-action-shiftkey.png diff --git a/kbstateapplet/images/cr16-action-superkey.png b/kbstateapplet/images/cr16-action-superkey.png Binary files differnew file mode 100644 index 0000000..69b5495 --- /dev/null +++ b/kbstateapplet/images/cr16-action-superkey.png diff --git a/kbstateapplet/images/cr16-action-unlatched.png b/kbstateapplet/images/cr16-action-unlatched.png Binary files differnew file mode 100644 index 0000000..55b8c22 --- /dev/null +++ b/kbstateapplet/images/cr16-action-unlatched.png diff --git a/kbstateapplet/images/cr22-action-altkey.png b/kbstateapplet/images/cr22-action-altkey.png Binary files differnew file mode 100644 index 0000000..12a2ffd --- /dev/null +++ b/kbstateapplet/images/cr22-action-altkey.png diff --git a/kbstateapplet/images/cr22-action-capskey.png b/kbstateapplet/images/cr22-action-capskey.png Binary files differnew file mode 100644 index 0000000..4a89ba2 --- /dev/null +++ b/kbstateapplet/images/cr22-action-capskey.png diff --git a/kbstateapplet/images/cr22-action-controlkey.png b/kbstateapplet/images/cr22-action-controlkey.png Binary files differnew file mode 100644 index 0000000..3072dac --- /dev/null +++ b/kbstateapplet/images/cr22-action-controlkey.png diff --git a/kbstateapplet/images/cr22-action-hyperkey.png b/kbstateapplet/images/cr22-action-hyperkey.png Binary files differnew file mode 100644 index 0000000..84653a1 --- /dev/null +++ b/kbstateapplet/images/cr22-action-hyperkey.png diff --git a/kbstateapplet/images/cr22-action-kbstate_mouse.png b/kbstateapplet/images/cr22-action-kbstate_mouse.png Binary files differnew file mode 100644 index 0000000..fa62c4a --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_mouse.png diff --git a/kbstateapplet/images/cr22-action-kbstate_mouse_left.png b/kbstateapplet/images/cr22-action-kbstate_mouse_left.png Binary files differnew file mode 100644 index 0000000..8068f76 --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_mouse_left.png diff --git a/kbstateapplet/images/cr22-action-kbstate_mouse_left_selected.png b/kbstateapplet/images/cr22-action-kbstate_mouse_left_selected.png Binary files differnew file mode 100644 index 0000000..d305816 --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_mouse_left_selected.png diff --git a/kbstateapplet/images/cr22-action-kbstate_mouse_mid.png b/kbstateapplet/images/cr22-action-kbstate_mouse_mid.png Binary files differnew file mode 100644 index 0000000..7cc9365 --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_mouse_mid.png diff --git a/kbstateapplet/images/cr22-action-kbstate_mouse_mid_selected.png b/kbstateapplet/images/cr22-action-kbstate_mouse_mid_selected.png Binary files differnew file mode 100644 index 0000000..ca10e56 --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_mouse_mid_selected.png diff --git a/kbstateapplet/images/cr22-action-kbstate_mouse_right.png b/kbstateapplet/images/cr22-action-kbstate_mouse_right.png Binary files differnew file mode 100644 index 0000000..3c8b806 --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_mouse_right.png diff --git a/kbstateapplet/images/cr22-action-kbstate_mouse_right_selected.png b/kbstateapplet/images/cr22-action-kbstate_mouse_right_selected.png Binary files differnew file mode 100644 index 0000000..eeedcfe --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_mouse_right_selected.png diff --git a/kbstateapplet/images/cr22-action-kbstate_slowkeys.png b/kbstateapplet/images/cr22-action-kbstate_slowkeys.png Binary files differnew file mode 100644 index 0000000..6f3c784 --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_slowkeys.png diff --git a/kbstateapplet/images/cr22-action-kbstate_stickykeys.png b/kbstateapplet/images/cr22-action-kbstate_stickykeys.png Binary files differnew file mode 100644 index 0000000..8380024 --- /dev/null +++ b/kbstateapplet/images/cr22-action-kbstate_stickykeys.png diff --git a/kbstateapplet/images/cr22-action-key.png b/kbstateapplet/images/cr22-action-key.png Binary files differnew file mode 100644 index 0000000..8839538 --- /dev/null +++ b/kbstateapplet/images/cr22-action-key.png diff --git a/kbstateapplet/images/cr22-action-keypressno.png b/kbstateapplet/images/cr22-action-keypressno.png Binary files differnew file mode 100644 index 0000000..36e6c45 --- /dev/null +++ b/kbstateapplet/images/cr22-action-keypressno.png diff --git a/kbstateapplet/images/cr22-action-keypressok.png b/kbstateapplet/images/cr22-action-keypressok.png Binary files differnew file mode 100644 index 0000000..eb8bf1d --- /dev/null +++ b/kbstateapplet/images/cr22-action-keypressok.png diff --git a/kbstateapplet/images/cr22-action-lockkey.png b/kbstateapplet/images/cr22-action-lockkey.png Binary files differnew file mode 100644 index 0000000..eab7fe8 --- /dev/null +++ b/kbstateapplet/images/cr22-action-lockkey.png diff --git a/kbstateapplet/images/cr22-action-metakey.png b/kbstateapplet/images/cr22-action-metakey.png Binary files differnew file mode 100644 index 0000000..7bb6091 --- /dev/null +++ b/kbstateapplet/images/cr22-action-metakey.png diff --git a/kbstateapplet/images/cr22-action-shiftkey.png b/kbstateapplet/images/cr22-action-shiftkey.png Binary files differnew file mode 100644 index 0000000..57728a4 --- /dev/null +++ b/kbstateapplet/images/cr22-action-shiftkey.png diff --git a/kbstateapplet/images/cr22-action-superkey.png b/kbstateapplet/images/cr22-action-superkey.png Binary files differnew file mode 100644 index 0000000..c281174 --- /dev/null +++ b/kbstateapplet/images/cr22-action-superkey.png diff --git a/kbstateapplet/images/cr22-action-unlatched.png b/kbstateapplet/images/cr22-action-unlatched.png Binary files differnew file mode 100644 index 0000000..8839538 --- /dev/null +++ b/kbstateapplet/images/cr22-action-unlatched.png diff --git a/kbstateapplet/images/cr32-action-altkey.png b/kbstateapplet/images/cr32-action-altkey.png Binary files differnew file mode 100644 index 0000000..a14311e --- /dev/null +++ b/kbstateapplet/images/cr32-action-altkey.png diff --git a/kbstateapplet/images/cr32-action-capskey.png b/kbstateapplet/images/cr32-action-capskey.png Binary files differnew file mode 100644 index 0000000..ae9c16b --- /dev/null +++ b/kbstateapplet/images/cr32-action-capskey.png diff --git a/kbstateapplet/images/cr32-action-controlkey.png b/kbstateapplet/images/cr32-action-controlkey.png Binary files differnew file mode 100644 index 0000000..34edc2b --- /dev/null +++ b/kbstateapplet/images/cr32-action-controlkey.png diff --git a/kbstateapplet/images/cr32-action-hyperkey.png b/kbstateapplet/images/cr32-action-hyperkey.png Binary files differnew file mode 100644 index 0000000..12022e1 --- /dev/null +++ b/kbstateapplet/images/cr32-action-hyperkey.png diff --git a/kbstateapplet/images/cr32-action-kbstate_mouse.png b/kbstateapplet/images/cr32-action-kbstate_mouse.png Binary files differnew file mode 100644 index 0000000..7bb545f --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_mouse.png diff --git a/kbstateapplet/images/cr32-action-kbstate_mouse_left.png b/kbstateapplet/images/cr32-action-kbstate_mouse_left.png Binary files differnew file mode 100644 index 0000000..1285dee --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_mouse_left.png diff --git a/kbstateapplet/images/cr32-action-kbstate_mouse_left_selected.png b/kbstateapplet/images/cr32-action-kbstate_mouse_left_selected.png Binary files differnew file mode 100644 index 0000000..f14a894 --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_mouse_left_selected.png diff --git a/kbstateapplet/images/cr32-action-kbstate_mouse_mid.png b/kbstateapplet/images/cr32-action-kbstate_mouse_mid.png Binary files differnew file mode 100644 index 0000000..73e8d86 --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_mouse_mid.png diff --git a/kbstateapplet/images/cr32-action-kbstate_mouse_mid_selected.png b/kbstateapplet/images/cr32-action-kbstate_mouse_mid_selected.png Binary files differnew file mode 100644 index 0000000..1b7fa59 --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_mouse_mid_selected.png diff --git a/kbstateapplet/images/cr32-action-kbstate_mouse_right.png b/kbstateapplet/images/cr32-action-kbstate_mouse_right.png Binary files differnew file mode 100644 index 0000000..76da4bb --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_mouse_right.png diff --git a/kbstateapplet/images/cr32-action-kbstate_mouse_right_selected.png b/kbstateapplet/images/cr32-action-kbstate_mouse_right_selected.png Binary files differnew file mode 100644 index 0000000..243f3f5 --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_mouse_right_selected.png diff --git a/kbstateapplet/images/cr32-action-kbstate_slowkeys.png b/kbstateapplet/images/cr32-action-kbstate_slowkeys.png Binary files differnew file mode 100644 index 0000000..4d898a0 --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_slowkeys.png diff --git a/kbstateapplet/images/cr32-action-kbstate_stickykeys.png b/kbstateapplet/images/cr32-action-kbstate_stickykeys.png Binary files differnew file mode 100644 index 0000000..765c27d --- /dev/null +++ b/kbstateapplet/images/cr32-action-kbstate_stickykeys.png diff --git a/kbstateapplet/images/cr32-action-key.png b/kbstateapplet/images/cr32-action-key.png Binary files differnew file mode 100644 index 0000000..6e3cb09 --- /dev/null +++ b/kbstateapplet/images/cr32-action-key.png diff --git a/kbstateapplet/images/cr32-action-keypressno.png b/kbstateapplet/images/cr32-action-keypressno.png Binary files differnew file mode 100644 index 0000000..b227c56 --- /dev/null +++ b/kbstateapplet/images/cr32-action-keypressno.png diff --git a/kbstateapplet/images/cr32-action-keypressok.png b/kbstateapplet/images/cr32-action-keypressok.png Binary files differnew file mode 100644 index 0000000..75a1d77 --- /dev/null +++ b/kbstateapplet/images/cr32-action-keypressok.png diff --git a/kbstateapplet/images/cr32-action-lockkey.png b/kbstateapplet/images/cr32-action-lockkey.png Binary files differnew file mode 100644 index 0000000..f3b7bfb --- /dev/null +++ b/kbstateapplet/images/cr32-action-lockkey.png diff --git a/kbstateapplet/images/cr32-action-metakey.png b/kbstateapplet/images/cr32-action-metakey.png Binary files differnew file mode 100644 index 0000000..3ab3ed8 --- /dev/null +++ b/kbstateapplet/images/cr32-action-metakey.png diff --git a/kbstateapplet/images/cr32-action-shiftkey.png b/kbstateapplet/images/cr32-action-shiftkey.png Binary files differnew file mode 100644 index 0000000..0f73f01 --- /dev/null +++ b/kbstateapplet/images/cr32-action-shiftkey.png diff --git a/kbstateapplet/images/cr32-action-superkey.png b/kbstateapplet/images/cr32-action-superkey.png Binary files differnew file mode 100644 index 0000000..fb3e9a9 --- /dev/null +++ b/kbstateapplet/images/cr32-action-superkey.png diff --git a/kbstateapplet/images/cr32-action-unlatched.png b/kbstateapplet/images/cr32-action-unlatched.png Binary files differnew file mode 100644 index 0000000..6e3cb09 --- /dev/null +++ b/kbstateapplet/images/cr32-action-unlatched.png diff --git a/kbstateapplet/images/cr48-action-altkey.png b/kbstateapplet/images/cr48-action-altkey.png Binary files differnew file mode 100644 index 0000000..109267f --- /dev/null +++ b/kbstateapplet/images/cr48-action-altkey.png diff --git a/kbstateapplet/images/cr48-action-capskey.png b/kbstateapplet/images/cr48-action-capskey.png Binary files differnew file mode 100644 index 0000000..6418494 --- /dev/null +++ b/kbstateapplet/images/cr48-action-capskey.png diff --git a/kbstateapplet/images/cr48-action-controlkey.png b/kbstateapplet/images/cr48-action-controlkey.png Binary files differnew file mode 100644 index 0000000..6167b81 --- /dev/null +++ b/kbstateapplet/images/cr48-action-controlkey.png diff --git a/kbstateapplet/images/cr48-action-hyperkey.png b/kbstateapplet/images/cr48-action-hyperkey.png Binary files differnew file mode 100644 index 0000000..0e115a7 --- /dev/null +++ b/kbstateapplet/images/cr48-action-hyperkey.png diff --git a/kbstateapplet/images/cr48-action-kbstate_mouse.png b/kbstateapplet/images/cr48-action-kbstate_mouse.png Binary files differnew file mode 100644 index 0000000..30067fa --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_mouse.png diff --git a/kbstateapplet/images/cr48-action-kbstate_mouse_left.png b/kbstateapplet/images/cr48-action-kbstate_mouse_left.png Binary files differnew file mode 100644 index 0000000..522e36a --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_mouse_left.png diff --git a/kbstateapplet/images/cr48-action-kbstate_mouse_left_selected.png b/kbstateapplet/images/cr48-action-kbstate_mouse_left_selected.png Binary files differnew file mode 100644 index 0000000..e42fe28 --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_mouse_left_selected.png diff --git a/kbstateapplet/images/cr48-action-kbstate_mouse_mid.png b/kbstateapplet/images/cr48-action-kbstate_mouse_mid.png Binary files differnew file mode 100644 index 0000000..3119781 --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_mouse_mid.png diff --git a/kbstateapplet/images/cr48-action-kbstate_mouse_mid_selected.png b/kbstateapplet/images/cr48-action-kbstate_mouse_mid_selected.png Binary files differnew file mode 100644 index 0000000..511076c --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_mouse_mid_selected.png diff --git a/kbstateapplet/images/cr48-action-kbstate_mouse_right.png b/kbstateapplet/images/cr48-action-kbstate_mouse_right.png Binary files differnew file mode 100644 index 0000000..d4bd834 --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_mouse_right.png diff --git a/kbstateapplet/images/cr48-action-kbstate_mouse_right_selected.png b/kbstateapplet/images/cr48-action-kbstate_mouse_right_selected.png Binary files differnew file mode 100644 index 0000000..b35029f --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_mouse_right_selected.png diff --git a/kbstateapplet/images/cr48-action-kbstate_slowkeys.png b/kbstateapplet/images/cr48-action-kbstate_slowkeys.png Binary files differnew file mode 100644 index 0000000..6c707e0 --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_slowkeys.png diff --git a/kbstateapplet/images/cr48-action-kbstate_stickykeys.png b/kbstateapplet/images/cr48-action-kbstate_stickykeys.png Binary files differnew file mode 100644 index 0000000..3150fdf --- /dev/null +++ b/kbstateapplet/images/cr48-action-kbstate_stickykeys.png diff --git a/kbstateapplet/images/cr48-action-key.png b/kbstateapplet/images/cr48-action-key.png Binary files differnew file mode 100644 index 0000000..91ffaf8 --- /dev/null +++ b/kbstateapplet/images/cr48-action-key.png diff --git a/kbstateapplet/images/cr48-action-keypressno.png b/kbstateapplet/images/cr48-action-keypressno.png Binary files differnew file mode 100644 index 0000000..6a27e01 --- /dev/null +++ b/kbstateapplet/images/cr48-action-keypressno.png diff --git a/kbstateapplet/images/cr48-action-keypressok.png b/kbstateapplet/images/cr48-action-keypressok.png Binary files differnew file mode 100644 index 0000000..3137bda --- /dev/null +++ b/kbstateapplet/images/cr48-action-keypressok.png diff --git a/kbstateapplet/images/cr48-action-lockkey.png b/kbstateapplet/images/cr48-action-lockkey.png Binary files differnew file mode 100644 index 0000000..a149438 --- /dev/null +++ b/kbstateapplet/images/cr48-action-lockkey.png diff --git a/kbstateapplet/images/cr48-action-metakey.png b/kbstateapplet/images/cr48-action-metakey.png Binary files differnew file mode 100644 index 0000000..87b30fb --- /dev/null +++ b/kbstateapplet/images/cr48-action-metakey.png diff --git a/kbstateapplet/images/cr48-action-shiftkey.png b/kbstateapplet/images/cr48-action-shiftkey.png Binary files differnew file mode 100644 index 0000000..9f35c0b --- /dev/null +++ b/kbstateapplet/images/cr48-action-shiftkey.png diff --git a/kbstateapplet/images/cr48-action-superkey.png b/kbstateapplet/images/cr48-action-superkey.png Binary files differnew file mode 100644 index 0000000..e28d56a --- /dev/null +++ b/kbstateapplet/images/cr48-action-superkey.png diff --git a/kbstateapplet/images/cr48-action-unlatched.png b/kbstateapplet/images/cr48-action-unlatched.png Binary files differnew file mode 100644 index 0000000..91ffaf8 --- /dev/null +++ b/kbstateapplet/images/cr48-action-unlatched.png diff --git a/kbstateapplet/images/cr64-action-altkey.png b/kbstateapplet/images/cr64-action-altkey.png Binary files differnew file mode 100644 index 0000000..2bc4fdf --- /dev/null +++ b/kbstateapplet/images/cr64-action-altkey.png diff --git a/kbstateapplet/images/cr64-action-capskey.png b/kbstateapplet/images/cr64-action-capskey.png Binary files differnew file mode 100644 index 0000000..aeb8d37 --- /dev/null +++ b/kbstateapplet/images/cr64-action-capskey.png diff --git a/kbstateapplet/images/cr64-action-controlkey.png b/kbstateapplet/images/cr64-action-controlkey.png Binary files differnew file mode 100644 index 0000000..6474c9c --- /dev/null +++ b/kbstateapplet/images/cr64-action-controlkey.png diff --git a/kbstateapplet/images/cr64-action-hyperkey.png b/kbstateapplet/images/cr64-action-hyperkey.png Binary files differnew file mode 100644 index 0000000..7d07b5d --- /dev/null +++ b/kbstateapplet/images/cr64-action-hyperkey.png diff --git a/kbstateapplet/images/cr64-action-kbstate_mouse.png b/kbstateapplet/images/cr64-action-kbstate_mouse.png Binary files differnew file mode 100644 index 0000000..65c0bed --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_mouse.png diff --git a/kbstateapplet/images/cr64-action-kbstate_mouse_left.png b/kbstateapplet/images/cr64-action-kbstate_mouse_left.png Binary files differnew file mode 100644 index 0000000..477a376 --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_mouse_left.png diff --git a/kbstateapplet/images/cr64-action-kbstate_mouse_left_selected.png b/kbstateapplet/images/cr64-action-kbstate_mouse_left_selected.png Binary files differnew file mode 100644 index 0000000..7238a43 --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_mouse_left_selected.png diff --git a/kbstateapplet/images/cr64-action-kbstate_mouse_mid.png b/kbstateapplet/images/cr64-action-kbstate_mouse_mid.png Binary files differnew file mode 100644 index 0000000..af48eac --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_mouse_mid.png diff --git a/kbstateapplet/images/cr64-action-kbstate_mouse_mid_selected.png b/kbstateapplet/images/cr64-action-kbstate_mouse_mid_selected.png Binary files differnew file mode 100644 index 0000000..09090f6 --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_mouse_mid_selected.png diff --git a/kbstateapplet/images/cr64-action-kbstate_mouse_right.png b/kbstateapplet/images/cr64-action-kbstate_mouse_right.png Binary files differnew file mode 100644 index 0000000..9358126 --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_mouse_right.png diff --git a/kbstateapplet/images/cr64-action-kbstate_mouse_right_selected.png b/kbstateapplet/images/cr64-action-kbstate_mouse_right_selected.png Binary files differnew file mode 100644 index 0000000..6b89e7d --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_mouse_right_selected.png diff --git a/kbstateapplet/images/cr64-action-kbstate_slowkeys.png b/kbstateapplet/images/cr64-action-kbstate_slowkeys.png Binary files differnew file mode 100644 index 0000000..737fb13 --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_slowkeys.png diff --git a/kbstateapplet/images/cr64-action-kbstate_stickykeys.png b/kbstateapplet/images/cr64-action-kbstate_stickykeys.png Binary files differnew file mode 100644 index 0000000..4b705d7 --- /dev/null +++ b/kbstateapplet/images/cr64-action-kbstate_stickykeys.png diff --git a/kbstateapplet/images/cr64-action-key.png b/kbstateapplet/images/cr64-action-key.png Binary files differnew file mode 100644 index 0000000..0858c19 --- /dev/null +++ b/kbstateapplet/images/cr64-action-key.png diff --git a/kbstateapplet/images/cr64-action-keypressno.png b/kbstateapplet/images/cr64-action-keypressno.png Binary files differnew file mode 100644 index 0000000..c8abb2f --- /dev/null +++ b/kbstateapplet/images/cr64-action-keypressno.png diff --git a/kbstateapplet/images/cr64-action-keypressok.png b/kbstateapplet/images/cr64-action-keypressok.png Binary files differnew file mode 100644 index 0000000..04af637 --- /dev/null +++ b/kbstateapplet/images/cr64-action-keypressok.png diff --git a/kbstateapplet/images/cr64-action-lockkey.png b/kbstateapplet/images/cr64-action-lockkey.png Binary files differnew file mode 100644 index 0000000..66f92c2 --- /dev/null +++ b/kbstateapplet/images/cr64-action-lockkey.png diff --git a/kbstateapplet/images/cr64-action-metakey.png b/kbstateapplet/images/cr64-action-metakey.png Binary files differnew file mode 100644 index 0000000..d862c94 --- /dev/null +++ b/kbstateapplet/images/cr64-action-metakey.png diff --git a/kbstateapplet/images/cr64-action-shiftkey.png b/kbstateapplet/images/cr64-action-shiftkey.png Binary files differnew file mode 100644 index 0000000..93fe232 --- /dev/null +++ b/kbstateapplet/images/cr64-action-shiftkey.png diff --git a/kbstateapplet/images/cr64-action-superkey.png b/kbstateapplet/images/cr64-action-superkey.png Binary files differnew file mode 100644 index 0000000..2c80b3b --- /dev/null +++ b/kbstateapplet/images/cr64-action-superkey.png diff --git a/kbstateapplet/images/cr64-action-unlatched.png b/kbstateapplet/images/cr64-action-unlatched.png Binary files differnew file mode 100644 index 0000000..0858c19 --- /dev/null +++ b/kbstateapplet/images/cr64-action-unlatched.png diff --git a/kbstateapplet/images/crsc-action-altkey.svg b/kbstateapplet/images/crsc-action-altkey.svg new file mode 100644 index 0000000..237120c --- /dev/null +++ b/kbstateapplet/images/crsc-action-altkey.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 50 L 50 50 " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-capskey.svg b/kbstateapplet/images/crsc-action-capskey.svg new file mode 100644 index 0000000..35a5abe --- /dev/null +++ b/kbstateapplet/images/crsc-action-capskey.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 32 50 L 14 32 L 24 32 L 24 14 L 40 14 L 40 32 L 50 32 L 32 50 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-controlkey.svg b/kbstateapplet/images/crsc-action-controlkey.svg new file mode 100644 index 0000000..1adda99 --- /dev/null +++ b/kbstateapplet/images/crsc-action-controlkey.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 32 L 32 14 L 50 32 " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-hyperkey.svg b/kbstateapplet/images/crsc-action-hyperkey.svg new file mode 100644 index 0000000..dee8c43 --- /dev/null +++ b/kbstateapplet/images/crsc-action-hyperkey.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 14 L 50 14 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 32 L 50 32 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 50 L 50 50 " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_mouse.svg b/kbstateapplet/images/crsc-action-kbstate_mouse.svg new file mode 100644 index 0000000..fc20b85 --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_mouse.svg @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 13,31 L 13,32 C 13,46 21,50 22,51 L 42,51 C 42,51 51,46 51,32 L 51,31 L 39,29 L 25,29 L 13,31 z " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 13,31 L 13,15 L 25,13 L 25,29 L 13,31 z " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 25,29 L 25,13 L 39,13 L 39,29 L 25,29 z " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 39,29 L 39,13 L 51,15 L 51,31 L 39,29 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_mouse_left.svg b/kbstateapplet/images/crsc-action-kbstate_mouse_left.svg new file mode 100644 index 0000000..52bffea --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_mouse_left.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:#808080;stroke:#808080;stroke-width:2" + d="M 21 23 A 2 2 0 1 1 17,23 A 2 2 0 1 1 21 23 z" /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_mouse_left_selected.svg b/kbstateapplet/images/crsc-action-kbstate_mouse_left_selected.svg new file mode 100644 index 0000000..c98a3a7 --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_mouse_left_selected.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:#808080;stroke:#808080;stroke-width:2" + d="M 13,31 L 13,15 L 25,13 L 25,29 L 13,31 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_mouse_mid.svg b/kbstateapplet/images/crsc-action-kbstate_mouse_mid.svg new file mode 100644 index 0000000..9080915 --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_mouse_mid.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:#808080;stroke:#808080;stroke-width:2" + d="M 34 21 A 2 2 0 1 1 30,21 A 2 2 0 1 1 34 21 z" /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_mouse_mid_selected.svg b/kbstateapplet/images/crsc-action-kbstate_mouse_mid_selected.svg new file mode 100644 index 0000000..4c0bf2b --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_mouse_mid_selected.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:#808080;stroke:#808080;stroke-width:2" + d="M 25,29 L 25,13 L 39,13 L 39,29 L 25,29 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_mouse_right.svg b/kbstateapplet/images/crsc-action-kbstate_mouse_right.svg new file mode 100644 index 0000000..652c3d7 --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_mouse_right.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:#808080;stroke:#808080;stroke-width:2;" + d="M 47 23 A 2 2 0 1 1 43,23 A 2 2 0 1 1 47 23 z" /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_mouse_right_selected.svg b/kbstateapplet/images/crsc-action-kbstate_mouse_right_selected.svg new file mode 100644 index 0000000..2d890fd --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_mouse_right_selected.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:#808080;stroke:#808080;stroke-width:2" + d="M 39,29 L 39,13 L 51,15 L 51,31 L 39,29 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_slowkeys.svg b/kbstateapplet/images/crsc-action-kbstate_slowkeys.svg new file mode 100644 index 0000000..bfff429 --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_slowkeys.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 53 33 A 20 20 0 1 1 13,33 A 20 20 0 1 1 53 33 z" /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 33,16 L 33,33 L 46,33" /> +</svg> diff --git a/kbstateapplet/images/crsc-action-kbstate_stickykeys.svg b/kbstateapplet/images/crsc-action-kbstate_stickykeys.svg new file mode 100644 index 0000000..9d9c2dc --- /dev/null +++ b/kbstateapplet/images/crsc-action-kbstate_stickykeys.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg height="64" width="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 32 L 32 50 L 50 32 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 32,14 L 32,50" /> +</svg> diff --git a/kbstateapplet/images/crsc-action-key.svg b/kbstateapplet/images/crsc-action-key.svg new file mode 100644 index 0000000..644dca1 --- /dev/null +++ b/kbstateapplet/images/crsc-action-key.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> +</svg> diff --git a/kbstateapplet/images/crsc-action-keypressno.svg b/kbstateapplet/images/crsc-action-keypressno.svg new file mode 100644 index 0000000..e59b782 --- /dev/null +++ b/kbstateapplet/images/crsc-action-keypressno.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#ff0000;stroke-width:4;" + d="M 25 25 L 55 55 " /> + <path style="fill:none;stroke:#ff0000;stroke-width:4;" + d="M 25 55 L 55 25 " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-keypressok.svg b/kbstateapplet/images/crsc-action-keypressok.svg new file mode 100644 index 0000000..7ae244d --- /dev/null +++ b/kbstateapplet/images/crsc-action-keypressok.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:#00ff00;stroke:#00c000;stroke-width:2;" + d="M 14 31 L 23 55 L 55 22 L 25 42 L 14 31 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-lockkey.svg b/kbstateapplet/images/crsc-action-lockkey.svg new file mode 100644 index 0000000..9611a09 --- /dev/null +++ b/kbstateapplet/images/crsc-action-lockkey.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 32 50 L 22 40 L 28 40 L 28 30 L 36 30 L 36 40 L 42 40 L 32 50 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-metakey.svg b/kbstateapplet/images/crsc-action-metakey.svg new file mode 100644 index 0000000..49e07ad --- /dev/null +++ b/kbstateapplet/images/crsc-action-metakey.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:#000000;stroke:#808080;stroke-width:2;" + d="M 32 14 L 14 32 L 32 50 L 50 32 L 32 14 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-shiftkey.svg b/kbstateapplet/images/crsc-action-shiftkey.svg new file mode 100644 index 0000000..8ec78c9 --- /dev/null +++ b/kbstateapplet/images/crsc-action-shiftkey.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 32 14 L 14 32 L 24 32 L 24 50 L 40 50 L 40 32 L 50 32 L 32 14 z " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-superkey.svg b/kbstateapplet/images/crsc-action-superkey.svg new file mode 100644 index 0000000..c0f6e58 --- /dev/null +++ b/kbstateapplet/images/crsc-action-superkey.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 14 L 50 14 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 32 L 50 32 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 50 L 50 50 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 14 14 L 14 50 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 32 14 L 32 50 " /> + <path style="fill:none;stroke:#808080;stroke-width:2;" + d="M 50 14 L 50 50 " /> +</svg> diff --git a/kbstateapplet/images/crsc-action-unlatched.svg b/kbstateapplet/images/crsc-action-unlatched.svg new file mode 100644 index 0000000..644dca1 --- /dev/null +++ b/kbstateapplet/images/crsc-action-unlatched.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="64" height="64"> +</svg> diff --git a/kbstateapplet/kbstate.cpp b/kbstateapplet/kbstate.cpp new file mode 100644 index 0000000..05ee26a --- /dev/null +++ b/kbstateapplet/kbstate.cpp @@ -0,0 +1,1079 @@ +/* + * Copyright (c) 2004 Gunnar Schmi Dt <gunnar@schmi-dt.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + */ + +#include <qpainter.h> +#include <qtooltip.h> +#include <qdrawutil.h> +#include <qcursor.h> +#include <qimage.h> +#include <qpopupmenu.h> + +#include <kaboutapplication.h> +#include <kpopupmenu.h> +#include <kaboutdata.h> +#include <klocale.h> +#include <kglobal.h> +#include <kglobalsettings.h> +#include <kapplication.h> +#include <kiconloader.h> +#include <kiconeffect.h> +#include <knotifyclient.h> +#include <kshortcut.h> +#include <kkeynative.h> +#include <kdemacros.h> +#include <kprocess.h> +#include "kdeexportfix.h" +#include "kbstate.h" +#include "kbstate.moc" + +extern "C" +{ +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/XKBlib.h> +#define XK_MISCELLANY +#define XK_XKB_KEYS +#include <X11/keysymdef.h> +#include <X11/extensions/XKB.h> + + KDE_EXPORT KPanelApplet* init(QWidget *parent, const QString& configFile) + { + KGlobal::locale()->insertCatalogue("kbstateapplet"); + KbStateApplet *applet = new KbStateApplet(configFile, KPanelApplet::Normal, KPanelApplet::About, parent, "kbstateapplet"); + return applet; + } +} + +struct ModifierKey { + const unsigned int mask; + const KeySym keysym; + const char *name; + const char *icon; + const char *text; + const bool isModifier; +}; + +static ModifierKey modifierKeys[] = { + { ShiftMask, 0, I18N_NOOP("Shift"), "shiftkey", "", true }, + { ControlMask, 0, I18N_NOOP("Control"), "controlkey", "", true }, + { 0, XK_Alt_L, I18N_NOOP("Alt"), "altkey", "", true }, + { 0, 0, I18N_NOOP("Win"), "superkey", "", true }, + { 0, XK_Meta_L, I18N_NOOP("Meta"), "metakey", "", true }, + { 0, XK_Super_L, I18N_NOOP("Super"), "superkey", "", true }, + { 0, XK_Hyper_L, I18N_NOOP("Hyper"), "hyperkey", "", true }, + { 0, 0, I18N_NOOP("Alt Graph"), "", I18N_NOOP("æ"), true }, + { 0, XK_Num_Lock, I18N_NOOP("Num Lock"), "lockkey", I18N_NOOP("Num"), false }, + { LockMask, 0, I18N_NOOP("Caps Lock"), "capskey", "", false }, + { 0, XK_Scroll_Lock, I18N_NOOP("Scroll Lock"), "lockkey", I18N_NOOP("Scroll"), false }, + { 0, 0, "", "", "", false } +}; + + +/********************************************************************/ + +KbStateApplet::KbStateApplet(const QString& configFile, Type t, int actions, + QWidget *parent, const char *name) + : KPanelApplet( configFile, t, actions, parent, name ) +{ + for (int i = 0; i < 8; i++) { + icons[i] = 0; + } + instance = new KInstance ("kbstateapplet"); + loadConfig(); + initMasks(); + mouse = new MouseIcon (instance, this, "mouse"); + sticky = new TimeoutIcon (instance, "", "kbstate_stickykeys", this, "sticky"); + slow = new TimeoutIcon (instance, "", "kbstate_slowkeys", this, "slow"); + bounce = new TimeoutIcon (instance, "", "", this, "bounce"); + + xkb = XkbGetMap(qt_xdisplay(), 0, XkbUseCoreKbd); + + if (xkb != 0) { + XkbGetControls (qt_xdisplay(), XkbAllControlsMask, xkb); + if (xkb->ctrls != 0) + accessxFeatures = xkb->ctrls->enabled_ctrls; + else + accessxFeatures = 0; + } + else + accessxFeatures = 0; + + //startTimer(100); // ten times a second + connect(kapp, SIGNAL(kdisplayPaletteChanged()), SLOT(paletteChanged())); + + kapp->installX11EventFilter (this); + int opcode_rtn, error_rtn; + XkbQueryExtension (this->x11Display(), &opcode_rtn, &xkb_base_event_type, &error_rtn, NULL, NULL); + XkbSelectEvents (this->x11Display(), XkbUseCoreKbd, XkbAllEventsMask, + XkbAllEventsMask); + + buildPopupMenu(); +} + +KbStateApplet::~KbStateApplet() { + kapp->removeX11EventFilter (this); + setCustomMenu(0); + delete instance; + delete popup; + delete sizePopup; +} +// Builds, connects _popup menu +void KbStateApplet::buildPopupMenu() +{ + sizePopup=new KPopupMenu(this); + sizePopup->setCheckable( true ); + sizePopup->insertItem(i18n("Small"), 13); + sizePopup->insertItem(i18n("Medium"), 20); + sizePopup->insertItem(i18n("Large"), 26); + connect(sizePopup,SIGNAL(activated(int)), this, SLOT(setIconDim(int))); + + showPopup=new KPopupMenu(this); + showPopup->setCheckable( true ); + modifierItem=showPopup->insertItem(i18n("Modifier Keys"), this, SLOT(toggleModifier())); + lockkeysItem=showPopup->insertItem(i18n("Lock Keys"), this, SLOT(toggleLockkeys())); + mouseItem=showPopup->insertItem(i18n("Mouse Status"), this, SLOT(toggleMouse())); + accessxItem=showPopup->insertItem(i18n("AccessX Status"), this, SLOT(toggleAccessX())); + + popup = new KPopupMenu(this); + popup->setCheckable( true ); + popup->insertTitle(0, i18n("Keyboard Status Applet")); + popup->insertItem(i18n("Set Icon Size"),sizePopup); + fillSpaceItem = popup->insertItem(i18n("Fill Available Space"), + this, SLOT(toggleFillSpace())); + popup->insertItem(i18n("Show"),showPopup); + popup->insertItem(i18n("Configure AccessX Features..."), this, SLOT(configureAccessX())); + popup->insertItem(i18n("Configure Keyboard..."), this, SLOT(configureKeyboard())); + popup->insertItem(i18n("Configure Mouse..."), this, SLOT(configureMouse())); + popup->insertSeparator(); + popup->insertItem(i18n("About"), this, SLOT(about())); + setCustomMenu(popup); + updateMenu(); +} + +void KbStateApplet::updateMenu() +{ if (popup) { + showPopup->setItemChecked (modifierItem, showModifiers); + showPopup->setItemChecked (lockkeysItem, showLockkeys); + showPopup->setItemChecked (mouseItem, showMouse); + showPopup->setItemChecked (accessxItem, showAccessX); + popup->setItemChecked (fillSpaceItem, fillSpace); + sizePopup->setItemChecked(13, size == 13); + sizePopup->setItemChecked(20, size == 20); + sizePopup->setItemChecked(26, size == 26); + } +} + +void calculateSizes (int space, int modifiers, int lockkeys, int accessx, + bool showMouse, int &lines, int &length, int &size) +// Calculates the layout based on a given number of modifiers, lockkeys and +// accessx features. +// Output: +// lines: number of lines +// length: number of icons per line +// size: size of the icons +{ + // Calculate lines and length + if (showMouse) + ++accessx; + + lines = space>=size ? space/size : 1; + length = modifiers + lockkeys + accessx; + + if (length > 0 && lines >= 2) { + length = (length + lines-1)/lines; + + // As we want to have some line breaks, we need to do some corrections: + // Calculate the number of lines that are really needed: + int linesNeeded = (modifiers+length-1)/length + (lockkeys+length-1)/length; + int tmp1 = modifiers%length == 0 ? 0 : length - modifiers%length; + int tmp2 = lockkeys%length == 0 ? 0 : length - lockkeys%length; + if ((tmp1 + tmp2) < accessx) + linesNeeded = (modifiers+lockkeys+accessx + length-1)/length; + + // If we need more lines than we have, try with more icons per line: + while (linesNeeded > lines) { + length++; + linesNeeded = (modifiers+length-1)/length + (lockkeys+length-1)/length; + int tmp1 = modifiers%length == 0 ? 0 : length - modifiers%length; + int tmp2 = lockkeys%length == 0 ? 0 : length - lockkeys%length; + if ((tmp1 + tmp2) < accessx) + linesNeeded = (modifiers+lockkeys+accessx + length-1)/length; + } + lines = linesNeeded; + } +} + +int KbStateApplet::widthForHeight(int h) const { + int lines, length; + int size = this->size; + + int accessx = 0; + if ((accessxFeatures & XkbStickyKeysMask) != 0) + accessx++; + if ((accessxFeatures & XkbSlowKeysMask) != 0) + accessx++; + if ((accessxFeatures & XkbBounceKeysMask) != 0) + accessx++; + + calculateSizes (h, showModifiers?modifiers.count():0, + showLockkeys?lockkeys.count():0, + showAccessX?accessx:0, + showMouse, lines, length, size); + + if (fillSpace) + size = h/lines; + + return length*size; +} + +int KbStateApplet::heightForWidth(int w) const { + int lines, length; + int size = this->size; + + int accessx = 0; + if ((accessxFeatures & XkbStickyKeysMask) != 0) + accessx++; + if ((accessxFeatures & XkbSlowKeysMask) != 0) + accessx++; + if ((accessxFeatures & XkbBounceKeysMask) != 0) + accessx++; + + calculateSizes (w, showModifiers?modifiers.count():0, + showLockkeys?lockkeys.count():0, + showAccessX?accessx:0, + showMouse, lines, length, size); + + if (fillSpace) + size = w/lines; + + return length*size; +} + +void KbStateApplet::mousePressEvent(QMouseEvent *e) { + if (e->button() == RightButton) + popup->popup(e->globalPos()); +} + +void KbStateApplet::setIconDim (int size) { + this->size = size; + saveConfig(); + updateMenu(); + update(); + updateGeometry(); + emit updateLayout(); +} + +void KbStateApplet::toggleFillSpace() { + fillSpace = !fillSpace; + saveConfig(); + updateMenu(); + layout(); + updateGeometry(); + emit updateLayout(); +} + +void KbStateApplet::resizeEvent( QResizeEvent*e ) { + QWidget::resizeEvent(e); + layout(); +} + +void KbStateApplet::layout() { + int size = this->size; + + int lines, length, x,y,dx,dy, ldx,ldy; + int modifierCount = showModifiers?modifiers.count():0; + int lockkeyCount = showLockkeys?lockkeys.count():0; + int accessxCount = 0; + + if (showAccessX) { + if ((accessxFeatures & XkbStickyKeysMask) != 0) + accessxCount++; + if ((accessxFeatures & XkbSlowKeysMask) != 0) + accessxCount++; + if ((accessxFeatures & XkbBounceKeysMask) != 0) + accessxCount++; + } + + if (orientation() == Vertical) { + calculateSizes (width(), modifierCount, lockkeyCount, accessxCount, + showMouse, lines, length, size); + + if (fillSpace) + size = width()/lines; + + x = (width()-lines*size)/2; + y = 0; + dx = 0; + dy = size; + ldx= size; + ldy= 0; + } + else { + calculateSizes (height(), modifierCount, lockkeyCount, accessxCount, + showMouse, lines, length, size); + + if (fillSpace) + size = height()/lines; + + x = 0; + y = (height()-lines*size)/2; + dx = size; + dy = 0; + ldx= 0; + ldy= size; + } + + StatusIcon *icon; + int item = 1; + for (icon = modifiers.first(); icon; icon = modifiers.next()) { + if (showModifiers) { + icon->setGeometry (x, y, size, size); + icon->show(); + icon->update(); + item++; x+=dx; y+=dy; + if (item > length) { + x = x - length*dx + ldx; + y = y - length*dy + ldy; + item = 1; + } + } + else + icon->hide(); + } + + int lockkeyLines = (lockkeyCount+length-1)/length; + int accessxLines = lines - (modifierCount+length-1)/length - lockkeyLines; + + if (showMouse) + ++accessxCount; + + if (lockkeyLines*length + accessxLines*length + >= lockkeyCount + accessxCount) + { + if (lines > 1 && item > 1) { + x = x - (item-1)*dx + ldx; + y = y - (item-1)*dy + ldy; + item = 1; + } + } + else { + accessxLines++; + } + + if (showMouse && showAccessX && accessxLines > 0) { + mouse->setGeometry (x, y, size, size); + mouse->show(); + mouse->update(); + accessxCount--; + item++; x+=dx; y+=dy; + if (item > length) { + x = x - length*dx + ldx; + y = y - length*dy + ldy; + item = 1; + accessxLines--; + } + } + else + mouse->hide(); + + if ((accessxFeatures & XkbStickyKeysMask) != 0 + && showAccessX && accessxLines > 0) + { + sticky->setGeometry (x, y, size, size); + sticky->show(); + sticky->update(); + accessxCount--; + item++; x+=dx; y+=dy; + if (item > length) { + x = x - length*dx + ldx; + y = y - length*dy + ldy; + item = 1; + accessxLines--; + } + } + else + sticky->hide(); + + if ((accessxFeatures & XkbSlowKeysMask) != 0 + && showAccessX && accessxLines > 0) + { + slow->setGeometry (x, y, size, size); + slow->show(); + slow->update(); + accessxCount--; + item++; x+=dx; y+=dy; + if (item > length) { + x = x - length*dx + ldx; + y = y - length*dy + ldy; + item = 1; + accessxLines--; + } + } + else + slow->hide(); + + if ((accessxFeatures & XkbBounceKeysMask) != 0 + && showAccessX && accessxLines > 0) + { + bounce->setGeometry (x, y, size, size); + bounce->show(); + bounce->update(); + accessxCount--; + item++; x+=dx; y+=dy; + if (item > length) { + x = x - length*dx + ldx; + y = y - length*dy + ldy; + item = 1; + accessxLines--; + } + } + else + bounce->hide(); + + if (lines > 1) { + if (item != 1) { + x = x - (item-1)*dx + ldx; + y = y - (item-1)*dy + ldy; + } + item = 1; + } + for (icon = lockkeys.first(); icon; icon = lockkeys.next()) { + if (showLockkeys) { + icon->setGeometry (x, y, size, size); + icon->show(); + icon->update(); + item++; x+=dx; y+=dy; + if (item > length) { + x = x - length*dx + ldx; + y = y - length*dy + ldy; + item = 1; + } + } + else + icon->hide(); + } + + if ((accessxFeatures & XkbBounceKeysMask) != 0 + && showAccessX && accessxCount > 0) + { + bounce->setGeometry (x, y, size, size); + bounce->show(); + bounce->update(); + item++; x+=dx; y+=dy; + accessxCount--; + } + + if ((accessxFeatures & XkbSlowKeysMask) != 0 + && showAccessX && accessxCount > 0) + { + slow->setGeometry (x, y, size, size); + slow->show(); + slow->update(); + item++; x+=dx; y+=dy; + accessxCount--; + } + + if ((accessxFeatures & XkbStickyKeysMask) != 0 + && showAccessX && accessxCount > 0) + { + sticky->setGeometry (x, y, size, size); + sticky->show(); + sticky->update(); + item++; x+=dx; y+=dy; + accessxCount--; + } + + if (showMouse && accessxCount > 0) + { + mouse->setGeometry (x, y, size, size); + mouse->show(); + mouse->update(); + item++; x+=dx; y+=dy; + accessxCount--; + } +} + +void KbStateApplet::paletteChanged() { + for (int i = 0; i < 8; i++) { + if (icons[i]) + icons[i]->updateImages(); + } + mouse->update(); + sticky->update(); + slow->update(); + bounce->update(); +} + +void KbStateApplet::initMasks() { + for (int i = 0; i < 8; i++) { + if (icons[i]) + delete icons[i]; + icons[i] = 0; + } + state = 0; + + for (int i = 0; strcmp(modifierKeys[i].name, "") != 0; i++) { + int mask = modifierKeys[i].mask; + if (mask == 0) + if (modifierKeys[i].keysym != 0) + mask = XkbKeysymToModifiers (this->x11Display(), modifierKeys[i].keysym); + else if (!strcmp(modifierKeys[i].name, "Win")) + mask = KKeyNative::modX(KKey::WIN); + else + mask = XkbKeysymToModifiers (this->x11Display(), XK_Mode_switch) + | XkbKeysymToModifiers (this->x11Display(), XK_ISO_Level3_Shift) + | XkbKeysymToModifiers (this->x11Display(), XK_ISO_Level3_Latch) + | XkbKeysymToModifiers (this->x11Display(), XK_ISO_Level3_Lock); + + int map = 0; + for (map = 0; map < 8; map++) { + if ((mask & (1 << map)) != 0) + break; + } + if ((map <= 7) && !(icons[map])) { + icons[map] = new KeyIcon (i, instance, this, modifierKeys[i].name); + QToolTip::add (icons[map], i18n (modifierKeys[i].name)); + connect (icons[map], SIGNAL(stateChangeRequest (KeyIcon*,bool,bool)), + SLOT(stateChangeRequest (KeyIcon*,bool,bool))); + if (modifierKeys[i].isModifier) + modifiers.append(icons[map]); + else + lockkeys.append(icons[map]); + } + } +} + +bool KbStateApplet::x11Event (XEvent *evt) { + if (evt->type == xkb_base_event_type + XkbEventCode) { + XkbEvent *kbevt = (XkbEvent *)evt; + switch (kbevt->any.xkb_type) { + case XkbStateNotify: + timerEvent (0); + + mouse->setState (kbevt->state.ptr_buttons); + break; + case XkbAccessXNotify: + switch (kbevt->accessx.detail) { + case XkbAXN_SKPress: + slow->setGlyth(i18n("a (the first letter in the alphabet)", "a")); + slow->setImage("unlatched"); + break; + case XkbAXN_SKAccept: + slow->setImage("keypressok"); + break; + case XkbAXN_SKRelease: + slow->setGlyth(" "); + slow->setImage("kbstate_slowkeys"); + break; + case XkbAXN_SKReject: + slow->setImage("keypressno", kbevt->accessx.sk_delay>150?kbevt->accessx.sk_delay:150); + break; + case XkbAXN_BKAccept: + slow->setGlyth(i18n("a (the first letter in the alphabet)", "a")); + bounce->setImage("keypressok", kbevt->accessx.sk_delay>150?kbevt->accessx.sk_delay:150); + break; + case XkbAXN_BKReject: + slow->setGlyth(i18n("a (the first letter in the alphabet)", "a")); + bounce->setImage("keypressno", kbevt->accessx.sk_delay>150?kbevt->accessx.sk_delay:150); + break; + } + break; + case XkbControlsNotify: { + XkbControlsNotifyEvent* event = (XkbControlsNotifyEvent*)evt; + accessxFeatures = event->enabled_ctrls; + + if ((accessxFeatures & XkbMouseKeysMask) != 0) { + XkbGetControls (qt_xdisplay(), XkbMouseKeysMask, xkb); + if (xkb->ctrls->mk_dflt_btn < 1) + mouse->setActiveKey (1); + else if (xkb->ctrls->mk_dflt_btn > 3) + mouse->setActiveKey (1); + else + mouse->setActiveKey (xkb->ctrls->mk_dflt_btn); + } + else + mouse->setActiveKey (0); + + layout(); + updateGeometry(); + emit updateLayout(); + break; + } + case XkbExtensionDeviceNotify: + /* This is a hack around the fact that XFree86's XKB doesn't give AltGr notifications */ + break; + default: + break; + } + } + return false; +} + +void KbStateApplet::timerEvent(QTimerEvent*) { + XkbStateRec state_return; + XkbGetState (this->x11Display(), XkbUseCoreKbd, &state_return); + unsigned char latched = XkbStateMods (&state_return); + unsigned char locked = XkbModLocks (&state_return); + int mods = ((int)latched)<<8 | locked; + + if (state != mods) { + state = mods; + for (int i = 0; i < 8; i++) { + if (icons[i]) + icons[i]->setState ((latched&(1<<i)) != 0, (locked&(1<<i)) != 0); + } + } +} + +void KbStateApplet::stateChangeRequest (KeyIcon *source, bool latched, bool locked) { + for (int i = 0; i < 8; i++) { + if (icons[i] == source) { + if (locked) + XkbLockModifiers (this->x11Display(), XkbUseCoreKbd, 1<<i, 1<<i); + else if (latched) { + XkbLockModifiers (this->x11Display(), XkbUseCoreKbd, 1<<i, 0); + XkbLatchModifiers (this->x11Display(), XkbUseCoreKbd, 1<<i, 1<<i); + } + else { + XkbLockModifiers (this->x11Display(), XkbUseCoreKbd, 1<<i, 0); + XkbLatchModifiers (this->x11Display(), XkbUseCoreKbd, 1<<i, 0); + } + } + } +} + + +void KbStateApplet::toggleModifier() { + showModifiers = !showModifiers; + updateMenu(); + layout(); + updateGeometry(); + saveConfig(); + emit updateLayout(); +} + +void KbStateApplet::toggleLockkeys() { + showLockkeys = !showLockkeys; + updateMenu(); + layout(); + updateGeometry(); + saveConfig(); + emit updateLayout(); +} + +void KbStateApplet::toggleMouse() { + showMouse = !showMouse; + updateMenu(); + layout(); + updateGeometry(); + saveConfig(); + emit updateLayout(); +} + +void KbStateApplet::toggleAccessX() { + showAccessX = !showAccessX; + updateMenu(); + layout(); + updateGeometry(); + saveConfig(); + emit updateLayout(); +} + +void KbStateApplet::configureAccessX() { + kapp->startServiceByDesktopName("kcmaccess"); +} + +void KbStateApplet::configureKeyboard() { + // The modulename "keyboard" is ambiguous on SuSE systems + // as there is also a YaST-module called "keyboard". + KProcess proc; + proc << "kcmshell"; + proc << "kde/keyboard"; + proc.start(KProcess::DontCare); + proc.detach(); +} + +void KbStateApplet::configureMouse() { + kapp->startServiceByDesktopName("mouse"); +} + +void KbStateApplet::about() { + KAboutData about("kbstateapplet", I18N_NOOP("Keyboard Status Applet"), "0.2", + I18N_NOOP("Panel applet that shows the state of the modifier keys"), KAboutData::License_GPL_V2, "(C) 2004 Gunnar Schmi Dt"); + KAboutApplication a(&about, this); + a.exec(); +} + +void KbStateApplet::loadConfig() +{ + KConfig *c = config(); + c->setGroup("General"); + size = c->readNumEntry("IconDim", 20); + fillSpace = c->readBoolEntry("fill space", true); + showModifiers = c->readBoolEntry("Modifierkeys visible",true); + showLockkeys = c->readBoolEntry("Lockkeys visible",true); + showMouse = c->readBoolEntry("Mouse status visible",true); + showAccessX = c->readBoolEntry("Slowkeys status visible",true); + showAccessX = c->readBoolEntry("AccessX status visible",showAccessX); +} + +void KbStateApplet::saveConfig() +{ + KConfig *c = config(); + c->setGroup("General"); + c->writeEntry("IconDim", size); + c->writeEntry("fill space", fillSpace); + c->writeEntry("Modifierkeys visible", showModifiers); + c->writeEntry("Lockkeys visible", showLockkeys); + c->writeEntry("Mouse status visible", showMouse); + c->writeEntry("AccessX status visible", showAccessX); + c->sync(); +} + +/********************************************************************/ + +KeyIcon::KeyIcon (int keyId, KInstance *instance, + QWidget *parent, const char *name) + : StatusIcon (modifierKeys[keyId].name, parent, name) { + this->instance = instance; + this->keyId = keyId; + this->tristate = (modifierKeys[keyId].isModifier); + isLocked = false; + isLatched = false; + updateImages (); + connect (this, SIGNAL(clicked()), SLOT(clickedSlot())); +} + +KeyIcon::~KeyIcon () { +} + +void KeyIcon::setState (bool latched, bool locked) { + latched = latched | locked; + + isLatched = latched; + isLocked = locked; + update(); +} + +void KeyIcon::clickedSlot () { + if (tristate) + emit stateChangeRequest (this, !isLocked, isLatched&!isLocked); + else + emit stateChangeRequest (this, false, !isLocked); +} + + +void KeyIcon::resizeEvent( QResizeEvent*e ) +{ + QWidget::resizeEvent(e); + updateImages(); +} + +void KeyIcon::updateImages () { + int size = width()<height() ? width() : height(); + + locked = instance->iconLoader()->loadIcon("lock_overlay", KIcon::Panel, size-4); + if (strcmp(modifierKeys[keyId].icon, "")) { + latched = instance->iconLoader()->loadIcon(modifierKeys[keyId].icon, KIcon::NoGroup, size-4); + unlatched = instance->iconLoader()->loadIcon(modifierKeys[keyId].icon, KIcon::NoGroup, size-4); + + QImage img = latched.convertToImage(); + KIconEffect::colorize(img, KGlobalSettings::highlightedTextColor(), 1.0); + latched.convertFromImage (img); + + img = unlatched.convertToImage(); + KIconEffect::colorize(img, KGlobalSettings::textColor(), 1.0); + unlatched.convertFromImage (img); + } + + update(); +} + +void KeyIcon::drawButton (QPainter *p) { + QColor black; + + int x = (width()-locked.width())/2; + int y = (height()-locked.height())/2; + int o = 0; + if (isLocked || isLatched) { + qDrawShadePanel (p, 0, 0, width(), height(), colorGroup(), true, 1, NULL); + p->fillRect (1,1,width()-2,height()-2, KGlobalSettings::highlightColor()); + if (strcmp(modifierKeys[keyId].icon, "")) + p->drawPixmap (x+1,y+1, latched); + black = KGlobalSettings::highlightedTextColor(); + o = 1; + } + else { + qDrawShadePanel (p, 0, 0, width(), height(), colorGroup(), false, 1, NULL); + if (strcmp(modifierKeys[keyId].icon, "")) + p->drawPixmap (x,y, unlatched); + black = KGlobalSettings::textColor(); + } + + QString text = i18n(modifierKeys[keyId].text); + if (!text.isEmpty() && !text.isNull()) { + QFont font = KGlobalSettings::generalFont(); + font.setWeight(QFont::Black); + QFontMetrics metrics(font); + QRect rect = metrics.boundingRect (text); + int size; + if (!strcmp(modifierKeys[keyId].name, "Alt Graph")) + size = rect.width()>rect.height()?rect.width():rect.height(); + else + size = rect.width()>12*rect.height()/5?rect.width():12*rect.height()/5; + + if (font.pixelSize() != -1) + font.setPixelSize (font.pixelSize()*width()*19/size/32); + else + font.setPointSizeFloat (font.pointSizeFloat()*width()*19/size/32); + + p->setPen (black); + p->setFont (font); + if (!strcmp(modifierKeys[keyId].name, "Alt Graph")) + p->drawText (o,o, width(), height(), Qt::AlignCenter, text); + else + p->drawText (o,o, width(), height()*(251)/384, Qt::AlignCenter, text); + } + if (tristate && isLocked) { + p->drawPixmap(x+o,y+o, locked); + } +} + +/********************************************************************/ + +MouseIcon::MouseIcon (KInstance *instance, QWidget *parent, const char *name) + : StatusIcon ("", parent, name) +{ + this->instance = instance; + state = 0; + activekey = 0; + updateImages (); + connect (this, SIGNAL(clicked()), SLOT(clickedSlot())); +} + +MouseIcon::~MouseIcon () { +} + +void MouseIcon::setState (int state) { + this->state = state; + + update(); +} + +void MouseIcon::setActiveKey (int activekey) { + this->activekey = activekey; + + update(); +} + +void MouseIcon::resizeEvent( QResizeEvent*e ) +{ + QWidget::resizeEvent(e); + updateImages(); +} + +QPixmap loadIcon(KInstance *instance, int size, QColor color, QString name) { + KIconLoader *loader = instance->iconLoader(); + QPixmap result = loader->loadIcon(name, KIcon::NoGroup, size); + + QImage img = result.convertToImage(); + KIconEffect::colorize(img, color, 1.0); + result.convertFromImage (img); + + return result; +} + +void MouseIcon::updateImages () { + int size = width()<height() ? width() : height(); + + QColor textcolor = KGlobalSettings::textColor(); + QColor basecolor = KGlobalSettings::baseColor(); + mouse = loadIcon (instance, size, textcolor, "kbstate_mouse"); + leftSelected = loadIcon (instance, size, textcolor, + "kbstate_mouse_left_selected"); + middleSelected = loadIcon (instance, size, textcolor, + "kbstate_mouse_mid_selected"); + rightSelected = loadIcon (instance, size, textcolor, + "kbstate_mouse_right_selected"); + leftDot = loadIcon (instance, size, textcolor, "kbstate_mouse_left"); + middleDot = loadIcon (instance, size, textcolor, "kbstate_mouse_mid"); + rightDot = loadIcon (instance, size, textcolor, "kbstate_mouse_right"); + leftDotSelected = loadIcon (instance, size, basecolor, + "kbstate_mouse_left"); + middleDotSelected = loadIcon (instance, size, basecolor, + "kbstate_mouse_mid"); + rightDotSelected = loadIcon (instance, size, basecolor, + "kbstate_mouse_right"); + + update(); +} + +void MouseIcon::drawButton (QPainter *p) { + p->drawPixmap(0,0, mouse); + if ((state & Button1Mask) != 0) + p->drawPixmap(0,0, leftSelected); + if ((state & Button2Mask) != 0) + p->drawPixmap(0,0, middleSelected); + if ((state & Button3Mask) != 0) + p->drawPixmap(0,0, rightSelected); + switch (activekey) { + case 0: + break; + case 1: + if ((state & Button1Mask) != 0) + p->drawPixmap(0,0, leftDotSelected); + else + p->drawPixmap(0,0, leftDot); + break; + case 2: + if ((state & Button2Mask) != 0) + p->drawPixmap(0,0, middleDotSelected); + else + p->drawPixmap(0,0, middleDot); + break; + case 3: + if ((state & Button3Mask) != 0) + p->drawPixmap(0,0, rightDotSelected); + else + p->drawPixmap(0,0, rightDot); + break; + } +} + +/********************************************************************/ + +TimeoutIcon::TimeoutIcon (KInstance *instance, const QString &text, + const QString &featurename, + QWidget *parent, const char *name) + : StatusIcon (text, parent, name) { + this->instance = instance; + this->featurename = featurename; + glyth = " "; + setImage (featurename); + connect (&timer, SIGNAL(timeout()), this, SLOT(timeout())); +} + +TimeoutIcon::~TimeoutIcon () { +} + +void TimeoutIcon::update () { + int size = width()<height() ? width() : height(); + if (pixmap.width() != size) + pixmap = instance->iconLoader()->loadIcon(iconname, KIcon::NoGroup, size); + + QImage img = pixmap.convertToImage(); + KIconEffect::colorize(img, KGlobalSettings::textColor(), 1.0); + pixmap.convertFromImage (img); + + image = pixmap; + QWidget::update(); +} + +void TimeoutIcon::setGlyth (const QString &glyth) { + timer.stop(); + this->glyth = glyth; + + QImage img = pixmap.convertToImage(); + KIconEffect::colorize(img, KGlobalSettings::textColor(), 1.0); + pixmap.convertFromImage (img); + + image = pixmap; + update(); +} + +void TimeoutIcon::setImage (const QString &name, int timeout) { + timer.stop(); + iconname = name; + if (!name.isNull() && !name.isEmpty()) { + int size = width()<height() ? width() : height(); + pixmap = instance->iconLoader()->loadIcon(iconname, KIcon::NoGroup, size); + + QImage img = pixmap.convertToImage(); + KIconEffect::colorize(img, KGlobalSettings::textColor(), 1.0); + pixmap.convertFromImage (img); + + image = pixmap; + } + update(); + if (timeout > 0) + timer.start (timeout, true); +} + +void TimeoutIcon::timeout () { + setGlyth (" "); + setImage(featurename); +} + + +void TimeoutIcon::drawButton (QPainter *p) { + QString text = glyth; + int count = 1; + int factor = 19; + + if (!iconname.isNull() && !iconname.isEmpty()) + p->drawPixmap(0,0, image); + else if (glyth == " ") { + text = i18n("a (the first letter in the alphabet)", "a"); + count = 3; + factor = 64; + } + + QFont font = KGlobalSettings::generalFont(); + font.setWeight(QFont::Black); + QFontMetrics metrics(font); + QRect rect = metrics.boundingRect (text); + int size = count*rect.width() > rect.height() + ? count*rect.width() : rect.height(); + if (font.pixelSize() != -1) + font.setPixelSize (font.pixelSize()*width()*factor/size/64); + else + font.setPointSizeFloat (font.pointSizeFloat()*width()*factor/size/64); + + p->setFont (font); + if (count == 1) { + p->setPen (KGlobalSettings::textColor()); + p->drawText (0,0, width()/2, height()/2, Qt::AlignCenter, text); + } + else { + QColor t = KGlobalSettings::textColor(); + QColor b = KGlobalSettings::baseColor(); + p->setPen (QColor ((2*t.red()+3*b.red())/5, + (2*t.green()+3*b.green())/5, + (2*t.blue()+3*b.blue())/5)); + p->drawText (width()/2,0, width()/2, height(), Qt::AlignCenter, text); + p->setPen (QColor ((2*t.red()+b.red())/3, + (2*t.green()+b.green())/3, + (2*t.blue()+b.blue())/3)); + p->drawText (0,0, width(), height(), Qt::AlignCenter, text); + p->setPen (KGlobalSettings::textColor()); + p->drawText (0,0, width()/2, height(), Qt::AlignCenter, text); + } +} + +/********************************************************************/ + +StatusIcon::StatusIcon (const QString &text, QWidget *parent, const char *name) + : QPushButton (text, parent, name) { + setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored)); +} + +StatusIcon::~StatusIcon () { +} + +QSize StatusIcon::minimumSizeHint () const { + return QSize (0,0); +} diff --git a/kbstateapplet/kbstate.h b/kbstateapplet/kbstate.h new file mode 100644 index 0000000..edcd3dc --- /dev/null +++ b/kbstateapplet/kbstate.h @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2004 Gunnar Schmi Dt <gunnar@schmi-dt.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + */ + +#ifndef __kbstate_h__ +#define __kbstate_h__ + +#include <kpanelapplet.h> +#include <qpushbutton.h> +#include <qptrlist.h> +#include <qtimer.h> + +extern "C" +{ +#include <X11/Xlib.h> +#include <X11/XKBlib.h> +} + +class QLabel; +class QGridLayout; +class KPopupMenu; + +class StatusIcon : public QPushButton { + Q_OBJECT +public: + StatusIcon (const QString &text, QWidget *parent, const char *name=0); + ~StatusIcon (); + + QSize minimumSizeHint () const; +}; +typedef QPtrList<StatusIcon> IconList; + +class TimeoutIcon : public StatusIcon { + Q_OBJECT +public: + TimeoutIcon (KInstance *instance, const QString &text, + const QString &featurename, + QWidget *parent, const char *name=0); + ~TimeoutIcon (); + + void update (); + void setGlyth (const QString &glyth); + void setImage (const QString &name, int timeout = 0); + + void drawButton (QPainter *p); + +private: + QString glyth; + QString iconname; + QString featurename; + QPixmap pixmap; + QPixmap image; + QTimer timer; + KInstance *instance; + +private slots: + void timeout (); +}; + +class KeyIcon : public StatusIcon { + Q_OBJECT +public: + KeyIcon (int keyId, KInstance *instance, + QWidget *parent, const char *name=0); + ~KeyIcon (); + void setState (bool latched, bool locked); + void drawButton (QPainter *p); + void updateImages (); + +signals: + void stateChangeRequest (KeyIcon *source, bool latched, bool locked); + +protected: + void resizeEvent(QResizeEvent*); + +private slots: + void clickedSlot(); + +private: + QPixmap locked; + QPixmap latched; + QPixmap unlatched; + bool isLatched; + bool isLocked; + bool tristate; + int keyId; + KInstance *instance; +}; + +class MouseIcon : public StatusIcon { + Q_OBJECT + public: + MouseIcon (KInstance *instance, QWidget *parent, const char *name=0); + ~MouseIcon (); + void setState (int state); + void setActiveKey (int activekey); + void drawButton (QPainter *p); + void updateImages (); + + protected: + void resizeEvent(QResizeEvent*); + + private: + QPixmap mouse; + QPixmap leftSelected; + QPixmap middleSelected; + QPixmap rightSelected; + QPixmap leftDot; + QPixmap middleDot; + QPixmap rightDot; + QPixmap leftDotSelected; + QPixmap middleDotSelected; + QPixmap rightDotSelected; + int state, activekey; + KInstance *instance; +}; + +class KbStateApplet : public KPanelApplet { + Q_OBJECT + +public: + KbStateApplet(const QString& configFile, Type t = Normal, int actions = 0, + QWidget *parent = 0, const char *name = 0); + ~KbStateApplet(); + + int widthForHeight(int height) const; + int heightForWidth(int width) const; + +protected: + void mousePressEvent(QMouseEvent *e); + void timerEvent(QTimerEvent*); + void resizeEvent(QResizeEvent*); + bool x11Event (XEvent *); + +public slots: + void about(); + void configureAccessX(); + void configureMouse(); + void configureKeyboard(); + void toggleModifier (); + void toggleLockkeys (); + void toggleMouse (); + void toggleAccessX (); + void paletteChanged(); + + void toggleFillSpace (); + +private slots: + void setIconDim (int size); + void stateChangeRequest (KeyIcon *source, bool latched, bool locked); + +private: + void loadConfig(); + void saveConfig(); + void layout(); + + int xkb_base_event_type; + + KeyIcon *(icons[8]); + IconList modifiers; + IconList lockkeys; + TimeoutIcon *sticky; + TimeoutIcon *slow; + TimeoutIcon *bounce; + MouseIcon *mouse; + + int state; + unsigned int accessxFeatures; + int size; + + void initMasks(); + + void buildPopupMenu(); + void updateMenu(); + KPopupMenu *popup; + KPopupMenu *sizePopup; + KPopupMenu *showPopup; + int modifierItem, lockkeysItem, mouseItem, accessxItem; + int fillSpaceItem; + bool showModifiers, showLockkeys, showMouse, showAccessX; + bool fillSpace; + + KInstance *instance; + XkbDescPtr xkb; +}; + +#endif // __kbstate_h__ diff --git a/kbstateapplet/kbstateapplet.desktop b/kbstateapplet/kbstateapplet.desktop new file mode 100644 index 0000000..bf5231d --- /dev/null +++ b/kbstateapplet/kbstateapplet.desktop @@ -0,0 +1,101 @@ +[Desktop Entry] +Type=Plugin +Name=Keyboard Status Applet +Name[bg]=Състояние на клавиатурата +Name[br]=Arloadig stad ar stokellaoueg +Name[ca]=Applet d'estat del teclat +Name[cs]=Applet ukazují stav klávesnice +Name[da]=Tastaturstatus-applet +Name[de]=Tastaturstatus +Name[el]=Μικροεφαρμογή κατάστασης πληκτρολογίου +Name[es]=Aplicación integrada en el panel con el estado del teclado +Name[et]=Klaviatuuristaatuse aplett +Name[eu]=Teklatuaren egoeraren applet-a +Name[fa]=برنامک وضعیت صفحه کلید +Name[fi]=Näppäimistötilan sovelma +Name[fr]=Applet d'état du clavier +Name[ga]=Feidhmchláirín Stádais an Mhéarchláir +Name[gl]=Applet de Estado do Teclado +Name[he]=יישומון מצב המקלדת +Name[hi]=कुंजीपट स्थिति ऐप्लेट +Name[hu]=Billentyűállapot-jelző +Name[is]=Lyklaborðsstöðu smáforrit +Name[it]=Applet per lo stato della tastiera +Name[ja]=キーボード状態アプレット +Name[ka]=კლავიატურის სტატუსის აპლეტი +Name[km]= អាប់ភ្លេតស្ថានភាពក្ដារចុច +Name[lt]=Klaviatūros būklės įskiepis +Name[mk]=Аплет за статус на тастатурата +Name[ms]=Aplet Status Papan Kekunci +Name[nb]=Miniprogram for tastaturstatus +Name[nds]=Tastatuurstatus-Lüttprogramm +Name[ne]=कुञ्जीपाटी वस्तुस्थिति एप्लेट +Name[nl]=Toetsenbordstatus-applet +Name[pa]=ਕੀ-ਬੋਰਡ ਸਥਿਤੀ ਐਪਲਿਟ +Name[pl]=Aplet stanu klawiatury +Name[pt]='Applet' de estado do teclado +Name[pt_BR]=Mini-aplicativo de status do teclado +Name[ru]=Аплет состояния клавиатуры +Name[sk]=Applet Stav klávesnice +Name[sl]=Vstavek za stanje tipkovnice +Name[sr]=Аплет за статус тастатуре +Name[sr@Latn]=Aplet za status tastature +Name[sv]=Miniprogram för tangentbordsstatus +Name[ta]=விசைப்பலகை நிலை குறுநிரல் +Name[tg]=Апплети ҳолати радифи ҳарфҳо +Name[th]=แอพเพล็ตสถานะแป้นพิมพ์ +Name[tr]=Klavye Durum Uygulaması +Name[uk]=Аплет стану клавіатури +Name[vi]=Tiểu dụng Trạng thái Bàn phím +Name[zh_CN]=键盘状态小程序 +Name[zh_TW]=鍵盤狀態小程式 +Comment=Panel applet that shows the state of the modifier keys +Comment[bg]=Аплет за системния панел, които показва състоянието на клавишите модификатори +Comment[bs]=Panel applet koji pokazuje stanje modifikatorskih tipaka +Comment[ca]=Applet del plafó que mostra l'estat de les tecles modificadores +Comment[cs]=Applet, který zobrazuje stav klávesnice +Comment[da]=Panelprogram der viser tilstanden for ændringstaster +Comment[de]=Ein Miniprogramm für die Kontrollleiste, das den Status der Sondertasten anzeigt +Comment[el]=Μικροεφαρμογή του πίνακα που εμφανίζει την κατάσταση των πλήκτρων τροποποίησης +Comment[es]=Aplicación integrada en el panel que muestra el estado de las teclas modificadoras +Comment[et]=Paneeliaplett, mis näitab muuteklahvide olekut +Comment[eu]=Panelaren applet-ak tekla aldatzaileen egoera erakusten du +Comment[fa]=برنامک تابلو که وضعیت کلیدهای تغییردهنده را نمایش میدهد +Comment[fi]=Muunnosnäppäinten tilan näyttävä paneelisovelma +Comment[fr]=Applet du tableau de bord affichant l'état des touches de modifications +Comment[ga]=Feidhmchláirín painéil a thaispeánann staid na n-eochracha mionathraithe +Comment[gl]=Applet do painel que mostra o estado das teclas modificadoras +Comment[hi]=फलक ऐप्लेट जो कि परिवर्धक कुंजियों की स्थिति दिखाता है +Comment[hu]=Panel-kisalkalmazás a módosítóbillentyűk állapotának kiírásához +Comment[is]=Spjaldforrit sem sýnir stöðu breytilykla +Comment[it]=Applet del pannello che mostra lo stato dei tasti modificatori +Comment[ja]=修飾キーの状態を表示するパネルアプレット +Comment[ka]=პანელის აპლეტი, რომელიც მოდიფიკატორ კლავიშთა მდგომარეობას ასახავს +Comment[km]=អាប់ភ្លេតបន្ទះដែលបង្ហាញស្ថានភាពរបស់គ្រាប់ចុចកែប្រែ +Comment[lt]=Pulto įskiepis rodantis klaviatūros modifikuojančiųjų klavišų būseną +Comment[mk]=Аплет на панелот што ја покажува состојбата на копчињата за менување +Comment[ms]=Panel aplet yang menayangkan keadaan kekunci pengubah suai +Comment[nb]=Panel-miniprogram som viser tilstanden for valgtastene +Comment[nds]=Paneel-Lüttprogramm, dat den Tostand vun de Sünnertasten wiest +Comment[ne]=परिमार्जक कुञ्जीको वस्तुस्थिति देखाउने प्यानल ऐप्लेट +Comment[nl]=Een paneelapplet dat de status van de modificatietoetsen weergeeft +Comment[pa]=ਸੋਧਕ ਸਵਿੱਚਾਂ ਦੀ ਹਾਲਤ ਵੇਖਾਉਣ ਨਾਲ ਤੁਸੀਂ ਪੈਨਲ ਐਪਲਿਟ ਵੇਖ ਸਕਦੇ ਹੋ +Comment[pl]=Apleta panelu, który pokazuje stan klawiszy modyfikujących +Comment[pt]='Applet' do painel que mostra o estado das teclas modificadoras +Comment[pt_BR]=Ícone de painel que mostra o estado das teclas modificadoras +Comment[ru]=Аплет, показывающий состояния специальных клавиш +Comment[sk]=Applet panelu, ktorý zobrazí stav modifikačných kláves +Comment[sl]=Pultni vstavek, ki prikazuje stanje modifikatorskih tipk (modifikatorjev) +Comment[sr]=Панелни аплет који приказује стање модификаторских тастера +Comment[sr@Latn]=Panelni aplet koji prikazuje stanje modifikatorskih tastera +Comment[sv]=Panelminiprogram som visar tillståndet hos väljartangenter +Comment[ta]=மாற்றி விசைகளின் நிலையைக் காட்டும் ஒரு பலக குறுநிரல் +Comment[tg]=Апплети нишонмедодаи ҳолати махсуси тугмаҳо +Comment[th]=ถาดแอพเพล็ตสำหรับแสดงสถานะของปุ่มพิมพ์ร่วม +Comment[tr]=Değiştirici tuş alanını gösteren bir panel eklentisi +Comment[uk]=Аплет панелі, який показує стан клавіш-модифікаторів +Comment[vi]=Tiểu dụng bảng điều khiển hiển thị trạng thái phím bổ trợ +Comment[zh_CN]=显示修饰键状态的面板小程序 +Comment[zh_TW]=一個顯示鍵盤狀態的面板小程式 +Icon=key_enter +X-KDE-Library=kbstate_panelapplet diff --git a/kbstateapplet/kdeexportfix.h b/kbstateapplet/kdeexportfix.h new file mode 100644 index 0000000..172dd94 --- /dev/null +++ b/kbstateapplet/kdeexportfix.h @@ -0,0 +1,22 @@ +/***************************************************** vim:set ts=4 sw=4 sts=4: + kdelibs < 3.3.2 had a bug in the KDE_EXPORT macro. This file fixes this + by undefining it. + ------------------- + Copyright : (C) 2005 by Gary Cramblitt <garycramblitt@comcast.net> + ------------------- + Original author: Gary Cramblitt <garycramblitt@comcast.net> + ******************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; version 2 of the License. * + * * + ***************************************************************************/ + +#include <kdeversion.h> +#if KDE_VERSION < KDE_MAKE_VERSION (3,3,2) +#undef KDE_EXPORT +#define KDE_EXPORT +#endif |