diff options
author | Ben Konrath <ben@bagu.org> | 2009-12-01 12:30:44 -0500 |
---|---|---|
committer | Ben Konrath <ben@bagu.org> | 2009-12-01 12:30:44 -0500 |
commit | 5f861037bbb5ec4d4b71d54b20fa3613d9c30eb3 (patch) | |
tree | ceabe698683f1d4f29f239c9658b55e42c65f231 | |
parent | 8492b97c2294def25e72c182921befb92bd9ba6e (diff) | |
download | caribou-5f861037bbb5ec4d4b71d54b20fa3613d9c30eb3.tar.gz |
add configuration button with empty configuration window
-rw-r--r-- | README | 7 | ||||
-rw-r--r-- | src/caribou.py | 2 | ||||
-rw-r--r-- | src/config.svg | 1080 | ||||
-rw-r--r-- | src/keyboard.py | 61 | ||||
-rw-r--r-- | src/keysyms.py | 2 | ||||
-rw-r--r-- | src/qwerty.py | 22 |
6 files changed, 1150 insertions, 24 deletions
@@ -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) ) ############################################################################### |