aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoracid-burn <acidburn@opendreambox.org>2009-05-06 14:40:48 +0200
committeracid-burn <acidburn@opendreambox.org>2009-05-06 14:40:48 +0200
commit8d3e9193ba0ddaa819db9c6a0447eca74a8328a3 (patch)
treec60c59ca421551aa811a92cae7dcd948fe159003
parentab4b0f90b14df623075a8b3fc1b321a370800cc6 (diff)
downloadenigma2-8d3e9193ba0ddaa819db9c6a0447eca74a8328a3.tar.gz
enigma2-8d3e9193ba0ddaa819db9c6a0447eca74a8328a3.zip
add option to select a keymap for a attached keyboard.
this closes #11
-rwxr-xr-x[-rw-r--r--]data/menu.xml2
-rwxr-xr-xlib/python/Components/Keyboard.py47
-rwxr-xr-x[-rw-r--r--]lib/python/Components/Makefile.am3
-rwxr-xr-x[-rw-r--r--]lib/python/Components/SetupDevices.py7
4 files changed, 56 insertions, 3 deletions
diff --git a/data/menu.xml b/data/menu.xml
index 86000531..c7fb8897 100644..100755
--- a/data/menu.xml
+++ b/data/menu.xml
@@ -61,10 +61,10 @@
<item level="0" text="Filesystem Check..." entryID="harddisk_check"><screen module="HarddiskSetup" screen="HarddiskFsckSelection"/></item>
</menu>
<!--<item text="Remote Control"><setup id="rc" /></item>-->
- <!--<item text="Keyboard"><setup id="keyboard" /></item>-->
<!--<item text="OSD"><setup id="osd" /></item>-->
<item requires="Display"><setup level="1" id="lcd" /></item>
<item level="0" text="Network..." entryID="network_setup"><screen module="NetworkSetup" screen="NetworkAdapterSelection" /></item>
+ <item text="Keyboard"><setup id="keyboard" /></item>
<!--<menu level="1" text="Network..." entryID="network_setup">
<id val="network" />
<item level="1" text="Device Setup..." entryID="device_setup"><screen module="NetworkSetup" screen="NetworkAdapterSelection"/></item>
diff --git a/lib/python/Components/Keyboard.py b/lib/python/Components/Keyboard.py
new file mode 100755
index 00000000..820d1036
--- /dev/null
+++ b/lib/python/Components/Keyboard.py
@@ -0,0 +1,47 @@
+from Components.Console import Console
+from os import listdir as os_listdir, path as os_path
+from re import compile as re_compile
+
+class Keyboard:
+ def __init__(self):
+ self.keyboardmaps = []
+ self.readKeyboardMapFiles()
+
+ def readKeyboardMapFiles(self):
+ for keymapfile in os_listdir('/usr/share/keymaps/'):
+ if (keymapfile.endswith(".info")):
+ f = open('/usr/share/keymaps/' + keymapfile)
+ mapfile = None
+ mapname = None
+ for line in f:
+ m = re_compile('^\s*(\w+)\s*=\s*(.*)\s*$').match(line)
+ if m:
+ key, val = m.groups()
+ if key == 'kmap':
+ mapfile = val
+ if key == 'name':
+ mapname = val
+ if (mapfile is not None) and (mapname is not None):
+ self.keyboardmaps.append(( mapfile,mapname))
+ f.close()
+
+ if len(self.keyboardmaps) == 0:
+ self.keyboardmaps = [('dream-de.kmap', 'Dreambox Keyboard Deutsch'), ('eng.kmap', 'Keyboard English')]
+
+ def activateKeyboardMap(self, index):
+ try:
+ keymap = self.keyboardmaps[index]
+ print "Activating keymap:",keymap[1]
+ keymappath = '/usr/share/keymaps/' + keymap[0]
+ if os_path.exists(keymappath):
+ Console().ePopen(("loadkmap < " + str(keymappath)))
+ except:
+ print "Selected keymap does not exist!"
+
+ def getKeyboardMaplist(self):
+ return self.keyboardmaps
+
+ def getDefaultKeyboardMap(self):
+ return 'eng.kmap'
+
+keyboard = Keyboard()
diff --git a/lib/python/Components/Makefile.am b/lib/python/Components/Makefile.am
index 67cec18d..85e4d3ec 100644..100755
--- a/lib/python/Components/Makefile.am
+++ b/lib/python/Components/Makefile.am
@@ -18,4 +18,5 @@ install_PYTHON = \
MultiContent.py MediaPlayer.py TunerInfo.py VideoWindow.py ChoiceList.py \
Element.py Playlist.py ParentalControl.py ParentalControlList.py \
Ipkg.py SelectionList.py Scanner.py SystemInfo.py DreamInfoHandler.py \
- Task.py language_cache.py Console.py ResourceManager.py TuneTest.py
+ Task.py language_cache.py Console.py ResourceManager.py TuneTest.py \
+ Keyboard.py
diff --git a/lib/python/Components/SetupDevices.py b/lib/python/Components/SetupDevices.py
index 71fb1e47..b037ea77 100644..100755
--- a/lib/python/Components/SetupDevices.py
+++ b/lib/python/Components/SetupDevices.py
@@ -1,6 +1,7 @@
from config import config, ConfigSelection, ConfigSubsection, ConfigOnOff, ConfigText
from Components.Timezones import timezones
from Components.Language import language
+from Components.Keyboard import keyboard
def InitSetupDevices():
@@ -11,8 +12,12 @@ def InitSetupDevices():
config.timezone.val = ConfigSelection(default = timezones.getDefaultTimezone(), choices = timezones.getTimezoneList())
config.timezone.val.addNotifier(timezoneNotifier)
+ def keyboardNotifier(configElement):
+ keyboard.activateKeyboardMap(configElement.index)
+
config.keyboard = ConfigSubsection();
- config.keyboard.keymap = ConfigSelection(choices = [("en", _("English")), ("de",_("German"))])
+ config.keyboard.keymap = ConfigSelection(default = keyboard.getDefaultKeyboardMap(), choices = keyboard.getKeyboardMaplist())
+ config.keyboard.keymap.addNotifier(keyboardNotifier)
def languageNotifier(configElement):
language.activateLanguage(configElement.value)