summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Konrath <ben@bagu.org>2009-12-01 12:30:44 -0500
committerBen Konrath <ben@bagu.org>2009-12-01 12:30:44 -0500
commit5f861037bbb5ec4d4b71d54b20fa3613d9c30eb3 (patch)
treeceabe698683f1d4f29f239c9658b55e42c65f231
parent8492b97c2294def25e72c182921befb92bd9ba6e (diff)
downloadcaribou-5f861037bbb5ec4d4b71d54b20fa3613d9c30eb3.tar.gz
add configuration button with empty configuration window
-rw-r--r--README7
-rw-r--r--src/caribou.py2
-rw-r--r--src/config.svg1080
-rw-r--r--src/keyboard.py61
-rw-r--r--src/keysyms.py2
-rw-r--r--src/qwerty.py22
6 files changed, 1150 insertions, 24 deletions
diff --git a/README b/README
index f47b682..f87336b 100644
--- a/README
+++ b/README
@@ -1,11 +1,8 @@
Running Caribou
===============
-python src/caribou.py
-
-or
-
-python src/caribou.py --debug
+cd src
+python ./caribou.py --debug
When an editable text widget has focus, a keyboard should pop up. There are
still some problems with the text focus detection and keyboard placement.
diff --git a/src/caribou.py b/src/caribou.py
index 4bf3112..615f613 100644
--- a/src/caribou.py
+++ b/src/caribou.py
@@ -1,5 +1,5 @@
#
-# Carbou - Text entry and UI navigation application
+# Carbou - text entry and UI navigation application
#
# Copyright (C) 2009 Adaptive Technology Resource Centre
#
diff --git a/src/config.svg b/src/config.svg
new file mode 100644
index 0000000..1df3bf3
--- /dev/null
+++ b/src/config.svg
@@ -0,0 +1,1080 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="36"
+ height="36"
+ id="svg3304"
+ sodipodi:version="0.32"
+ inkscape:version="0.46+devel"
+ sodipodi:docname="config.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.1">
+ <defs
+ id="defs3306">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective3891" />
+ <linearGradient
+ id="linearGradient3355">
+ <stop
+ id="stop3357"
+ offset="0"
+ style="stop-color:#6f716c;stop-opacity:1;" />
+ <stop
+ id="stop3359"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3331">
+ <stop
+ style="stop-color:#d3d7cf;stop-opacity:1;"
+ offset="0"
+ id="stop3333" />
+ <stop
+ style="stop-color:#d3d7cf;stop-opacity:0;"
+ offset="1"
+ id="stop3335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3315">
+ <stop
+ style="stop-color:white;stop-opacity:1;"
+ offset="0"
+ id="stop3317" />
+ <stop
+ style="stop-color:white;stop-opacity:0;"
+ offset="1"
+ id="stop3319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3307">
+ <stop
+ style="stop-color:#888a85;stop-opacity:1;"
+ offset="0"
+ id="stop3309" />
+ <stop
+ style="stop-color:#888a85;stop-opacity:0;"
+ offset="1"
+ id="stop3311" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3042">
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="0"
+ id="stop3044" />
+ <stop
+ id="stop3050"
+ offset="0.5"
+ style="stop-color:black;stop-opacity:1;" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop3046" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3028">
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0"
+ id="stop3030" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop3032" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5259">
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0"
+ id="stop5261" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop5263" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5251">
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1;"
+ offset="0"
+ id="stop5253" />
+ <stop
+ style="stop-color:#729fcf;stop-opacity:0;"
+ offset="1"
+ id="stop5255" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient1558">
+ <stop
+ style="stop-color:#babdb6"
+ offset="0"
+ id="stop1560" />
+ <stop
+ style="stop-color:#eeeeec"
+ offset="1"
+ id="stop1562" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3907">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3909" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3911" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3899">
+ <stop
+ style="stop-color:#eeeeec"
+ offset="0"
+ id="stop3901" />
+ <stop
+ style="stop-color:#d3d7cf"
+ offset="1"
+ id="stop3903" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient3915"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1685"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1687"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1689"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1691"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1693"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1695"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1697"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1699"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1701"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1703"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1705"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1707"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1709"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1711"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1713"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1715"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1717"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1719"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1721"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1723"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1725"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1727"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1729"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1731"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1733"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1735"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1737"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1739"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1741"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1743"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1745"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1747"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1749"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1751"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1753"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1755"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1757"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1759"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1761"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1763"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1765"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1767"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1769"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1771"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1773"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1775"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1777"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1779"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1783"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1785"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1787"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1789"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1791"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1793"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1795"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1797"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1799"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1803"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3907"
+ id="radialGradient1805"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
+ cx="20.913568"
+ cy="47.045319"
+ fx="20.913568"
+ fy="47.045319"
+ r="19.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1558"
+ id="linearGradient1564"
+ x1="16.396038"
+ y1="19.659277"
+ x2="16.396038"
+ y2="32.448051"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5251"
+ id="linearGradient5257"
+ x1="32.864544"
+ y1="13.794194"
+ x2="32.864544"
+ y2="5.5441942"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5259"
+ id="linearGradient5265"
+ x1="18.390438"
+ y1="15.705806"
+ x2="18.390438"
+ y2="5.0808058"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.973504,0,1.228642)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3899"
+ id="linearGradient3018"
+ x1="26.5"
+ y1="43.249905"
+ x2="26.5"
+ y2="35.75"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3028"
+ id="radialGradient3034"
+ cx="2.9999995"
+ cy="33.214287"
+ fx="2.9999995"
+ fy="33.214287"
+ r="3"
+ gradientTransform="matrix(0,-0.750002,1.333334,0,-40.28573,35.00001)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3028"
+ id="radialGradient3038"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0,-0.750002,1.333334,0,-88.28573,-30.49999)"
+ cx="2.9999995"
+ cy="33.214287"
+ fx="2.9999995"
+ fy="33.214287"
+ r="3" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3042"
+ id="linearGradient3048"
+ x1="37.03125"
+ y1="35.062885"
+ x2="37.03125"
+ y2="29.995127"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.888889,0,3.833333)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3307"
+ id="linearGradient3313"
+ x1="36.201752"
+ y1="37.667465"
+ x2="32.268337"
+ y2="39.921551"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3315"
+ id="linearGradient3321"
+ x1="33.358002"
+ y1="37.386215"
+ x2="33.045502"
+ y2="46.323711"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355"
+ id="linearGradient3329"
+ x1="38.201752"
+ y1="41.542465"
+ x2="38.979862"
+ y2="44.494751"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3331"
+ id="linearGradient3337"
+ x1="35.118725"
+ y1="40.170986"
+ x2="35.358002"
+ y2="45.698715"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#849193"
+ borderopacity="1.0000000"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6568542"
+ inkscape:cx="12.410301"
+ inkscape:cy="29.704668"
+ inkscape:current-layer="layer4"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:showpageshadow="false"
+ showborder="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="725"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ showguides="false"
+ inkscape:guide-bbox="true"
+ inkscape:grid-points="false"
+ stroke="#babdb6"
+ fill="#888a85"
+ borderlayer="top"
+ inkscape:snap-global="true"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ id="GridFromPre046Settings"
+ type="xygrid"
+ originx="0px"
+ originy="0px"
+ spacingx="0.5px"
+ spacingy="0.5px"
+ color="#0000ff"
+ empcolor="#0000ff"
+ opacity="0.2"
+ empopacity="0.4"
+ empspacing="2"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ <sodipodi:guide
+ position="0,0"
+ orientation="0,48"
+ id="guide2923" />
+ <sodipodi:guide
+ position="48,0"
+ orientation="-48,0"
+ id="guide2925" />
+ <sodipodi:guide
+ position="48,48"
+ orientation="0,-48"
+ id="guide2927" />
+ <sodipodi:guide
+ position="0,48"
+ orientation="48,0"
+ id="guide2929" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3309">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Lapo Calamandrei</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>keyboard</rdf:li>
+ <rdf:li>settings</rdf:li>
+ <rdf:li>properties</rdf:li>
+ <rdf:li>set</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <dc:date>2006-10-06</dc:date>
+ <dc:source>www.gnome.org</dc:source>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="key2"
+ style="display:inline"
+ transform="translate(0,-12)">
+ <g
+ id="g3302"
+ transform="matrix(1.2039454,-1.1508849,1.2039454,1.1508849,-64.683153,30.621522)">
+ <path
+ inkscape:transform-center-y="4.25"
+ sodipodi:nodetypes="csccccsccccc"
+ id="path2343"
+ d="m 32.5,24.1875 c -2.36285,1.124659 -4,3.522947 -4,6.3125 0,2.789555 1.637147,5.187838 4,6.3125 l 0,15.70917 6.03125,0 0,-15.70917 C 40.880361,35.682677 42.5,33.279516 42.5,30.5 c 0,-2.779514 -1.619643,-5.18268 -3.96875,-6.3125 l 0,6.3125 -3.015625,1 -3.015625,-1 0,-6.3125 z"
+ style="color:#000000;fill:url(#linearGradient3337);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3329);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cssccccsscccccccc"
+ id="path3297"
+ d="m 31.5,26.34375 c -1.140863,1.088316 -2,2.448306 -2,4.15625 0,2.400502 1.409032,4.440748 3.4375,5.40625 0.347345,0.167478 0.566561,0.520659 0.5625,0.90625 l 0,14.687073 4.03125,0 0,-14.687073 c -0.0041,-0.385591 0.215155,-0.738772 0.5625,-0.90625 C 40.107408,34.937766 41.5,32.893233 41.5,30.5 c 0,-1.697797 -0.84276,-3.066152 -1.96875,-4.15625 l 0,4.15625 c -0.0036,0.42786 -0.280514,0.805441 -0.6875,0.9375 l -3.03125,1 c -0.20292,0.06717 -0.42208,0.06717 -0.625,0 l -3,-1 C 31.780514,31.305441 31.503622,30.92786 31.5,30.5 l 0,-4.15625 z"
+ style="color:#000000;fill:none;stroke:url(#linearGradient3321);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ ry="1.0000045"
+ rx="1.0000045"
+ y="37.499985"
+ x="34.500008"
+ height="15.000015"
+ width="2.0000091"
+ id="rect3300"
+ style="opacity:0.4;color:#000000;fill:none;stroke:url(#linearGradient3313);stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+</svg>
diff --git a/src/keyboard.py b/src/keyboard.py
index 140d77a..affc963 100644
--- a/src/keyboard.py
+++ b/src/keyboard.py
@@ -1,6 +1,6 @@
# -*- coding: UTF-8 -*-
#
-# Carbou - Text entry and UI navigation application
+# Carbou - text entry and UI navigation application
#
# Copyright (C) 2009 Adaptive Technology Resource Centre
#
@@ -24,6 +24,8 @@ import gtk.gdk as gdk
import pango
import virtkey
import qwerty
+import rsvg
+import cairo
class CaribouPredicitionArea(gtk.HBox):
pass
@@ -49,9 +51,38 @@ class CaribouKeyboard(gtk.Frame):
for key in row:
# check if the key is a simple str or a key defined by a tuple
if isinstance(key, str):
- button = gtk.Button(key)
- char = ord(key.decode('utf-8'))
- button.connect("clicked", self.__send_unicode, char)
+ if key == "cf":
+ # configuration key
+ # FIXME scale based on size of other buttons
+ scaleFactor = 0.5
+ # FIXME catch "RuntimeError: unknown librsvg error" for file not found
+ # FIXME use broken image when file not found
+ svg = rsvg.Handle("config.svg")
+ surface = cairo.ImageSurface(cairo.FORMAT_ARGB32,
+ int(round(svg.props.width * scaleFactor)),
+ int(round(svg.props.height * scaleFactor)))
+ cr = cairo.Context(surface)
+ cr.scale(scaleFactor, scaleFactor)
+ svg.render_cairo(cr)
+ cfg = gtk.Image()
+ data = surface.get_data()
+ pixbuf = gtk.gdk.pixbuf_new_from_data(data,
+ gtk.gdk.COLORSPACE_RGB,
+ True,
+ 8,
+ int(round(svg.props.width * scaleFactor)),
+ int(round(svg.props.height * scaleFactor)),
+ int(round(svg.props.width * scaleFactor * 4)))
+ cfg.set_from_pixbuf(pixbuf)
+ button = gtk.Button()
+ button.set_image(cfg)
+ button.set_name("configuration")
+ switch_buttons.append(button)
+ else:
+ # single utf-8 character key
+ button = gtk.Button(key)
+ char = ord(key.decode('utf-8'))
+ button.connect("clicked", self.__send_unicode, char)
elif isinstance(key, tuple):
button = gtk.Button(key[0])
# check if this key is a layout switch key or not
@@ -68,10 +99,24 @@ class CaribouKeyboard(gtk.Frame):
rowhbox.pack_start(button, expand=False, fill=True)
- layoutvbox.pack_start(rowhbox, expand=False, fill=False)
+ layoutvbox.pack_start(rowhbox, expand=False, fill=True)
self._layouts.append(layoutvbox)
-
+
+ # add configuration window to layouts
+ # TODO use gtkBuilder
+ confhbox = gtk.HBox(homogeneous=True)
+ # return to first keyboard layout from configuration window
+ button = gtk.Button("abc") # FIXME use keyboard image
+ button.set_name(self._layouts[0].get_name())
+ switch_buttons.append(button)
+ confhbox.pack_start(button)
+
+ confhbox.pack_start(gtk.Label("configuration coming soon"))
+ confhbox.set_name("configuration")
+ self._layouts.append(confhbox)
+
+ # connect the change layout buttons
for button in switch_buttons:
for layout in self._layouts:
if button.get_name() == layout.get_name():
@@ -80,8 +125,8 @@ class CaribouKeyboard(gtk.Frame):
break
else:
print "ERROR" # TODO throw exception
-
- # add the first layer and make it visible
+
+ # add the first layout and make it visible
self.add(self._layouts[0])
self.show_all()
diff --git a/src/keysyms.py b/src/keysyms.py
index 2c21084..770a7ee 100644
--- a/src/keysyms.py
+++ b/src/keysyms.py
@@ -1,5 +1,5 @@
#
-# Carbou - Text entry and UI navigation application
+# Carbou - text entry and UI navigation application
#
# Copyright (C) 2009 Adaptive Technology Resource Centre
#
diff --git a/src/qwerty.py b/src/qwerty.py
index dd1b2ef..83cb534 100644
--- a/src/qwerty.py
+++ b/src/qwerty.py
@@ -1,6 +1,6 @@
# -*- coding: UTF-8 -*-
#
-# Carbou - Text entry and UI navigation application
+# Carbou - text entry and UI navigation application
#
# Copyright (C) 2009 Adaptive Technology Resource Centre
#
@@ -63,19 +63,23 @@ np = (".?12", "num_punct")
lt = ("abc", "lowercase")
###############################################################################
-# keyboard layouts - put a single utf-8 character or a tuple defined above
+# keyboard layouts
+# rules:
+# * key can be a single utf-8 character or a tuple defined above
+# * at least one layout must contain the reserved label "cf" for configuration
+# * layouts must be the same dimensions
###############################################################################
-lowercase = ( ("?", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p"),
- ( np, "a", "s", "d", "f", "g", "h", "j", "k", "l", bs),
- ( su, "z", "x", "c", "v", "b", "n", "m", sp, ".", en) )
+lowercase = ( ("cf", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p"),
+ ( np, "a", "s", "d", "f", "g", "h", "j", "k", "l", bs),
+ ( su, "z", "x", "c", "v", "b", "n", "m", sp, ".", en) )
-uppercase = ( ("?", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"),
- ( np, "A", "S", "D", "F", "G", "H", "J", "K", "L", bs),
- ( sd, "Z", "X", "C", "V", "B", "N", "M", sp, ".", en) )
+uppercase = ( ("cf", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"),
+ ( np, "A", "S", "D", "F", "G", "H", "J", "K", "L", bs),
+ ( sd, "Z", "X", "C", "V", "B", "N", "M", sp, ".", en) )
num_punct = ( ("!", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"),
- ( lt, "@", "$", "/", "+", "-", up, "\"", ",", "#", bs),
+ ( lt, "@", "$", "/", "+", "-", up, "\"", ",", "?", bs),
("'", "(", ")", ";", ":", le, dn, ri, sp, ".", en) )
###############################################################################