diff options
| author | acid-burn <acidburn@opendreambox.org> | 2009-05-06 14:40:48 +0200 |
|---|---|---|
| committer | acid-burn <acidburn@opendreambox.org> | 2009-05-06 14:40:48 +0200 |
| commit | 8d3e9193ba0ddaa819db9c6a0447eca74a8328a3 (patch) | |
| tree | c60c59ca421551aa811a92cae7dcd948fe159003 | |
| parent | ab4b0f90b14df623075a8b3fc1b321a370800cc6 (diff) | |
| download | enigma2-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.xml | 2 | ||||
| -rwxr-xr-x | lib/python/Components/Keyboard.py | 47 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Components/Makefile.am | 3 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Components/SetupDevices.py | 7 |
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) |
