OSDN Git Service

brailliantB driver: Add support for braille input. Untested, as I don't have a unit...
authorJames Teh <jamie@jantrid.net>
Thu, 10 Jan 2013 03:42:09 +0000 (13:42 +1000)
committerJames Teh <jamie@jantrid.net>
Thu, 10 Jan 2013 03:42:09 +0000 (13:42 +1000)
source/brailleDisplayDrivers/brailliantB.py

index 5941242..56029ee 100644 (file)
@@ -2,7 +2,7 @@
 #A part of NonVisual Desktop Access (NVDA)\r
 #This file is covered by the GNU General Public License.\r
 #See the file COPYING for more details.\r
-#Copyright (C) 2012 NV Access Limited\r
+#Copyright (C) 2012-2013 NV Access Limited\r
 \r
 import os\r
 import time\r
@@ -14,6 +14,7 @@ import hwPortUtils
 import braille\r
 import inputCore\r
 from logHandler import log\r
+import brailleInput\r
 \r
 TIMEOUT = 0.2\r
 BAUD_RATE = 115200\r
@@ -52,6 +53,9 @@ KEY_NAMES = {
        20: "down",\r
 }\r
 FIRST_ROUTING_KEY = 80\r
+DOT1_KEY = 2\r
+DOT8_KEY = 9\r
+SPACE_KEY = 10\r
 \r
 def _getPorts():\r
        # USB.\r
@@ -211,7 +215,7 @@ class BrailleDisplayDriver(braille.BrailleDisplayDriver):
                },\r
        })\r
 \r
-class InputGesture(braille.BrailleDisplayGesture):\r
+class InputGesture(braille.BrailleDisplayGesture, brailleInput.BrailleInputGesture):\r
 \r
        source = BrailleDisplayDriver.name\r
 \r
@@ -220,7 +224,18 @@ class InputGesture(braille.BrailleDisplayGesture):
                self.keyCodes = set(keys)\r
 \r
                self.keyNames = names = set()\r
+               isBrailleInput = True\r
                for key in self.keyCodes:\r
+                       if isBrailleInput:\r
+                               if DOT1_KEY <= key <= DOT8_KEY:\r
+                                       self.dots |= 1 << (key - DOT1_KEY)\r
+                               elif key == SPACE_KEY:\r
+                                       self.space = True\r
+                               else:\r
+                                       # This is not braille input.\r
+                                       isBrailleInput = False\r
+                                       self.dots = 0\r
+                                       self.space = False\r
                        if key >= FIRST_ROUTING_KEY:\r
                                names.add("routing")\r
                                self.routingIndex = key - FIRST_ROUTING_KEY\r