]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
hwdb: add XKB_FIXED_LAYOUT/VARIANT to the keyboard hwdb 4778/head
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 22 Nov 2016 05:21:24 +0000 (15:21 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 1 Dec 2016 10:11:54 +0000 (20:11 +1000)
Yubikeys and other pseudo keyboards require that they are in the US layout,
otherwise the data they send is invalid. Add two new keys to signal this to
processes that handles (XKB) layouts.

hwdb/60-keyboard.hwdb
hwdb/parse_hwdb.py

index 6d10fd7a9a353e2fbd6fc953e09771699ce4f380..5f81be5c470118ad7c5e71ae8a884add54170e47 100644 (file)
 #
 # To debug key presses and access scan code mapping data of
 # an input device use the commonly available tool: evtest(1).
+
+# A device with a fixed keyboard layout that must not be changed by
+# the desktop environment may specify that layout as:
+#   XKB_FIXED_LAYOUT="us"
+#   XKB_FIXED_VARIANT=""
+# Examples of such devices: the Yubikey or other key-code generating
+# devices.
 #
 # To update this file, create a new file
 #   /etc/udev/hwdb.d/70-keyboard.hwdb
@@ -1244,3 +1251,14 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDIXONSP:pnDIXON*:pvr*
  KEYBOARD_KEY_a0=!                                      # mute
  KEYBOARD_KEY_ae=!                                      # volume down
  KEYBOARD_KEY_b0=!                                      # volume up
+
+###########################################################
+# Fixed layout devices
+###########################################################
+
+# Yubico Yubico Yubikey II"
+evdev:input:b0003v1050p0010*
+# Yubico Yubikey NEO OTP+CCID
+evdev:input:b0003v1050p0111*
+ XKB_FIXED_LAYOUT="us"
+ XKB_FIXED_VARIANT=""
index d94d8d13d8f70a4245f7c1a1d69100c08f6c81c5..97c796863f46d6fbabe85bdc3fc80d6c3d02044c 100755 (executable)
@@ -37,7 +37,7 @@ try:
                            LineStart, LineEnd,
                            ZeroOrMore, OneOrMore, Combine, Or, Optional, Suppress, Group,
                            nums, alphanums, printables,
-                           stringEnd, pythonStyleComment,
+                           stringEnd, pythonStyleComment, QuotedString,
                            ParseBaseException)
 except ImportError:
     print('pyparsing is not available')
@@ -59,6 +59,7 @@ EOL = LineEnd().suppress()
 EMPTYLINE = LineEnd()
 COMMENTLINE = pythonStyleComment + EOL
 INTEGER = Word(nums)
+STRING =  QuotedString('"')
 REAL = Combine((INTEGER + Optional('.' + Optional(INTEGER))) ^ ('.' + INTEGER))
 UDEV_TAG = Word(string.ascii_uppercase, alphanums + '_')
 
@@ -76,7 +77,7 @@ def hwdb_grammar():
                 for category, conn in TYPES.items())
     matchline = Combine(prefix + Word(printables + ' ' + '®')) + EOL
     propertyline = (White(' ', exact=1).suppress() +
-                    Combine(UDEV_TAG - '=' - Word(alphanums + '_=:@*.! ') - Optional(pythonStyleComment)) +
+                    Combine(UDEV_TAG - '=' - Word(alphanums + '_=:@*.! "') - Optional(pythonStyleComment)) +
                     EOL)
     propertycomment = White(' ', exact=1) + pythonStyleComment + EOL
 
@@ -103,6 +104,8 @@ def property_grammar():
              ('POINTINGSTICK_SENSITIVITY', INTEGER),
              ('POINTINGSTICK_CONST_ACCEL', REAL),
              ('ID_INPUT_TOUCHPAD_INTEGRATION', Or(('internal', 'external'))),
+             ('XKB_FIXED_LAYOUT', STRING),
+             ('XKB_FIXED_VARIANT', STRING)
     )
     fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
                    for name, val in props]