This new patch should fix it. Anybody wants to test? If nothing wrong is found, I'd like to send it to X11 maintainers.
On 04/02/2014 22:50, Christoph Egger wrote: > Robert Millan <r...@debian.org> writes: >> On 04/02/2014 22:11, Christoph Egger wrote: >>> However after removing the USB keyboard again I >>> couldn't type on the notebook's builtin keyboard any more >> >> Can I see your Xorg.0.log ? > > X.Org X Server 1.14.5 > Release Date: 2013-12-12 > [ 17.049] X Protocol Version 11, Revision 0 > [ 17.049] Build Operating System: GNU/kFreeBSD 10.0-0-amd64 x86_64 Debian > [ 17.049] Current Operating System: GNU/kFreeBSD mitoraj 10.0-0-amd64 #0 > Thu, 26 Dec 2013 01:32:04 +0100 x86_64 > [ 17.049] Build Date: 04 February 2014 10:39:44PM > [ 17.049] xorg-server 2:1.14.5-1 (Maarten Lankhorst > <maarten.lankho...@ubuntu.com>) > [ 17.049] Current version of pixman: 0.32.4 > [ 17.049] Before reporting problems, check http://wiki.x.org > to make sure that you have the latest version. > [ 17.049] Markers: (--) probed, (**) from config file, (==) default > setting, > (++) from command line, (!!) notice, (II) informational, > (WW) warning, (EE) error, (NI) not implemented, (??) unknown. > [ 17.049] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Feb 4 23:07:03 > 2014 > [ 17.050] (==) Using system config directory "/usr/share/X11/xorg.conf.d" > [ 17.051] (==) No Layout section. Using the first Screen section. > [ 17.051] (==) No screen section available. Using defaults. > [ 17.051] (**) |-->Screen "Default Screen Section" (0) > [ 17.051] (**) | |-->Monitor "<default monitor>" > [ 17.051] (==) No monitor specified for screen "Default Screen Section". > Using a default monitor configuration. > [ 17.051] (==) Automatically adding devices > [ 17.051] (==) Automatically enabling devices > [ 17.051] (==) Not automatically adding GPU devices > [ 17.053] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not > exist. > [ 17.053] Entry deleted from font path. > [ 17.053] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist. > [ 17.053] Entry deleted from font path. > [ 17.054] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist. > [ 17.054] Entry deleted from font path. > [ 17.054] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist. > [ 17.054] Entry deleted from font path. > [ 17.054] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist. > [ 17.054] Entry deleted from font path. > [ 17.054] (==) FontPath set to: > /usr/share/fonts/X11/misc, > /usr/share/fonts/X11/Type1, > built-ins > [ 17.054] (==) ModulePath set to "/usr/lib/xorg/modules" > [ 17.054] (WW) Hotplugging requested but the server was compiled without a > config backend. No input devices were configured, the server will start > without any input devices. > [ 17.054] (II) Loader magic: 0x7fab00 > [ 17.054] (II) Module ABI versions: > [ 17.054] X.Org ANSI C Emulation: 0.4 > [ 17.054] X.Org Video Driver: 14.1 > [ 17.054] X.Org XInput driver : 19.1 > [ 17.054] X.Org Server Extension : 7.0 > [ 17.054] (--) PCI:*(0:0:2:0) 8086:0126:17aa:21da rev 9, Mem @ > 0xf0000000/4194304, 0xe0000000/268435456, I/O @ 0x00005000/64, BIOS @ > 0x????????/65536 > [ 17.054] Initializing built-in extension Generic Event Extension > [ 17.054] Initializing built-in extension SHAPE > [ 17.054] Initializing built-in extension MIT-SHM > [ 17.055] Initializing built-in extension XInputExtension > [ 17.055] Initializing built-in extension XTEST > [ 17.055] Initializing built-in extension BIG-REQUESTS > [ 17.055] Initializing built-in extension SYNC > [ 17.055] Initializing built-in extension XKEYBOARD > [ 17.055] Initializing built-in extension XC-MISC > [ 17.055] Initializing built-in extension SECURITY > [ 17.055] Initializing built-in extension XINERAMA > [ 17.055] Initializing built-in extension XFIXES > [ 17.055] Initializing built-in extension RENDER > [ 17.055] Initializing built-in extension RANDR > [ 17.055] Initializing built-in extension COMPOSITE > [ 17.055] Initializing built-in extension DAMAGE > [ 17.055] Initializing built-in extension MIT-SCREEN-SAVER > [ 17.055] Initializing built-in extension DOUBLE-BUFFER > [ 17.055] Initializing built-in extension RECORD > [ 17.055] Initializing built-in extension DPMS > [ 17.055] Initializing built-in extension X-Resource > [ 17.055] Initializing built-in extension XVideo > [ 17.055] Initializing built-in extension XVideo-MotionCompensation > [ 17.055] Initializing built-in extension XFree86-VidModeExtension > [ 17.055] Initializing built-in extension XFree86-DGA > [ 17.055] Initializing built-in extension XFree86-DRI > [ 17.055] Initializing built-in extension DRI2 > [ 17.055] (II) LoadModule: "glx" > [ 17.057] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so > [ 17.062] (II) Module glx: vendor="X.Org Foundation" > [ 17.062] compiled for 1.14.5, module version = 1.0.0 > [ 17.062] ABI class: X.Org Server Extension, version 7.0 > [ 17.062] (==) AIGLX enabled > [ 17.064] Loading extension GLX > [ 17.064] (==) Matched intel as autoconfigured driver 0 > [ 17.064] (==) Matched vesa as autoconfigured driver 1 > [ 17.064] (==) Matched fbdev as autoconfigured driver 2 > [ 17.064] (==) Assigned the driver to the xf86ConfigLayout > [ 17.064] (II) LoadModule: "intel" > [ 17.065] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so > [ 17.075] (II) Module intel: vendor="X.Org Foundation" > [ 17.076] compiled for 1.14.3, module version = 2.21.15 > [ 17.076] Module class: X.Org Video Driver > [ 17.076] ABI class: X.Org Video Driver, version 14.1 > [ 17.076] (II) LoadModule: "vesa" > [ 17.076] (II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so > [ 17.077] (II) Module vesa: vendor="X.Org Foundation" > [ 17.077] compiled for 1.14.3, module version = 2.3.3 > [ 17.077] Module class: X.Org Video Driver > [ 17.077] ABI class: X.Org Video Driver, version 14.1 > [ 17.077] (II) LoadModule: "fbdev" > [ 17.078] (WW) Warning, couldn't open module fbdev > [ 17.078] (II) UnloadModule: "fbdev" > [ 17.078] (II) Unloading fbdev > [ 17.078] (EE) Failed to load module "fbdev" (module does not exist, 0) > [ 17.078] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets: > i810, i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G, > 915G, E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM, > Pineview G, 965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33, > GM45, 4 Series, G45/G43, Q45/Q43, G41, B43, HD Graphics, > HD Graphics 2000, HD Graphics 3000, HD Graphics 2500, > HD Graphics 4000, HD Graphics P4000, HD Graphics 4600, > HD Graphics 5000, HD Graphics P4600/P4700, Iris(TM) Graphics 5100, > HD Graphics 4400, HD Graphics 4200, Iris(TM) Pro Graphics 5200 > [ 17.080] (II) VESA: driver for VESA chipsets: vesa > [ 17.080] (--) Using syscons driver with X support (version 134217730.0) > [ 17.080] (++) using VT number 7 > > [ 17.085] (WW) Falling back to old probe method for vesa > [ 17.085] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card > support > [ 17.085] (II) intel(0): Creating default Display subsection in Screen > section > "Default Screen Section" for depth/fbbpp 24/32 > [ 17.085] (==) intel(0): Depth 24, (--) framebuffer bpp 32 > [ 17.085] (==) intel(0): RGB weight 888 > [ 17.085] (==) intel(0): Default visual is TrueColor > [ 17.085] (--) intel(0): Integrated Graphics Chipset: Intel(R) HD Graphics > 3000 > [ 17.085] (**) intel(0): Relaxed fencing enabled > [ 17.085] (**) intel(0): Wait on SwapBuffers? enabled > [ 17.085] (**) intel(0): Triple buffering? enabled > [ 17.085] (**) intel(0): Framebuffer tiled > [ 17.085] (**) intel(0): Pixmaps tiled > [ 17.085] (**) intel(0): 3D buffers tiled > [ 17.085] (**) intel(0): SwapBuffers wait enabled > [ 17.085] (==) intel(0): video overlay key set to 0x101fe > [ 17.086] (II) intel(0): Output LVDS1 has no monitor section > [ 17.086] (II) intel(0): Output VGA1 has no monitor section > [ 17.294] (II) intel(0): Output HDMI1 has no monitor section > [ 17.353] (II) intel(0): Output DP1 has no monitor section > [ 17.453] (II) intel(0): Output HDMI2 has no monitor section > [ 17.462] (II) intel(0): Output HDMI3 has no monitor section > [ 17.523] (II) intel(0): Output DP2 has no monitor section > [ 17.583] (II) intel(0): Output DP3 has no monitor section > [ 17.583] (II) intel(0): EDID for output LVDS1 > [ 17.583] (II) intel(0): Manufacturer: LGD Model: 2d8 Serial#: 0 > [ 17.583] (II) intel(0): Year: 2010 Week: 0 > [ 17.583] (II) intel(0): EDID Version: 1.3 > [ 17.583] (II) intel(0): Digital Display Input > [ 17.583] (II) intel(0): Max Image Size [cm]: horiz.: 28 vert.: 16 > [ 17.583] (II) intel(0): Gamma: 2.20 > [ 17.583] (II) intel(0): DPMS capabilities: StandBy Suspend Off > [ 17.583] (II) intel(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 > [ 17.583] (II) intel(0): First detailed timing is preferred mode > [ 17.583] (II) intel(0): redX: 0.585 redY: 0.349 greenX: 0.341 greenY: > 0.543 > [ 17.583] (II) intel(0): blueX: 0.159 blueY: 0.127 whiteX: 0.313 whiteY: > 0.329 > [ 17.583] (II) intel(0): Manufacturer's mask: 0 > [ 17.583] (II) intel(0): Supported detailed timing: > [ 17.583] (II) intel(0): clock: 75.2 MHz Image Size: 277 x 156 mm > [ 17.583] (II) intel(0): h_active: 1366 h_sync: 1414 h_sync_end 1478 > h_blank_end 1582 h_border: 0 > [ 17.583] (II) intel(0): v_active: 768 v_sync: 772 v_sync_end 779 > v_blanking: 792 v_border: 0 > [ 17.583] (II) intel(0): LG Display > [ 17.583] (II) intel(0): LP125WH2-SLB1 > [ 17.583] (II) intel(0): EDID (in hex): > [ 17.583] (II) intel(0): 00ffffffffffff0030e4d80200000000 > [ 17.583] (II) intel(0): 00140103801c1078ead4e59559578b28 > [ 17.583] (II) intel(0): 20505400000001010101010101010101 > [ 17.583] (II) intel(0): 010101010101601d56d8500018303040 > [ 17.583] (II) intel(0): 4700159c1000001b0000000000000000 > [ 17.583] (II) intel(0): 00000000000000000000000000fe004c > [ 17.584] (II) intel(0): 4720446973706c61790a2020000000fe > [ 17.584] (II) intel(0): 004c503132355748322d534c42310084 > [ 17.584] (II) intel(0): Not using default mode "320x240" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "400x300" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "400x300" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "512x384" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "640x480" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "640x512" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "800x600" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "896x672" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "928x696" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "960x720" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "576x432" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "680x384" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "680x384" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "700x525" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "720x450" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "800x512" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "840x525" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "840x525" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "960x540" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "960x600" (doublescan mode > not supported) > [ 17.584] (II) intel(0): Not using default mode "1024x768" (doublescan > mode not supported) > [ 17.584] (II) intel(0): Printing probed modes for output LVDS1 > [ 17.584] (II) intel(0): Modeline "1366x768"x60.0 75.20 1366 1414 1478 > 1582 768 772 779 792 +hsync -vsync (47.5 kHz eP) > [ 17.584] (II) intel(0): Modeline "1360x768"x59.8 84.75 1360 1432 1568 > 1776 768 771 781 798 -hsync +vsync (47.7 kHz d) > [ 17.584] (II) intel(0): Modeline "1360x768"x60.0 72.00 1360 1408 1440 > 1520 768 771 781 790 +hsync -vsync (47.4 kHz d) > [ 17.584] (II) intel(0): Modeline "1024x768"x60.0 65.00 1024 1048 1184 > 1344 768 771 777 806 -hsync -vsync (48.4 kHz d) > [ 17.584] (II) intel(0): Modeline "800x600"x60.3 40.00 800 840 968 1056 > 600 601 605 628 +hsync +vsync (37.9 kHz d) > [ 17.584] (II) intel(0): Modeline "800x600"x56.2 36.00 800 824 896 1024 > 600 601 603 625 +hsync +vsync (35.2 kHz d) > [ 17.584] (II) intel(0): Modeline "640x480"x59.9 25.18 640 656 752 800 > 480 490 492 525 -hsync -vsync (31.5 kHz d) > [ 17.584] (II) intel(0): EDID for output VGA1 > [ 17.792] (II) intel(0): EDID for output HDMI1 > [ 17.853] (II) intel(0): EDID for output DP1 > [ 17.953] (II) intel(0): EDID for output HDMI2 > [ 17.962] (II) intel(0): EDID for output HDMI3 > [ 18.023] (II) intel(0): EDID for output DP2 > [ 18.083] (II) intel(0): EDID for output DP3 > [ 18.083] (II) intel(0): Output LVDS1 connected > [ 18.083] (II) intel(0): Output VGA1 disconnected > [ 18.083] (II) intel(0): Output HDMI1 disconnected > [ 18.083] (II) intel(0): Output DP1 disconnected > [ 18.083] (II) intel(0): Output HDMI2 disconnected > [ 18.083] (II) intel(0): Output HDMI3 disconnected > [ 18.083] (II) intel(0): Output DP2 disconnected > [ 18.083] (II) intel(0): Output DP3 disconnected > [ 18.083] (II) intel(0): Using exact sizes for initial modes > [ 18.083] (II) intel(0): Output LVDS1 using initial mode 1366x768 > [ 18.083] (II) intel(0): Using default gamma of (1.0, 1.0, 1.0) unless > otherwise stated. > [ 18.083] (II) intel(0): Kernel page flipping support detected, enabling > [ 18.083] (==) intel(0): DPI set to (96, 96) > [ 18.083] (II) Loading sub module "fb" > [ 18.083] (II) LoadModule: "fb" > [ 18.083] (II) Loading /usr/lib/xorg/modules/libfb.so > [ 18.088] (II) Module fb: vendor="X.Org Foundation" > [ 18.088] compiled for 1.14.5, module version = 1.0.0 > [ 18.088] ABI class: X.Org ANSI C Emulation, version 0.4 > [ 18.088] (II) Loading sub module "dri2" > [ 18.088] (II) LoadModule: "dri2" > [ 18.088] (II) Module "dri2" already built-in > [ 18.088] (II) UnloadModule: "vesa" > [ 18.088] (II) Unloading vesa > [ 18.088] (==) Depth 24 pixmap format is 32 bpp > [ 18.088] (II) intel(0): [DRI2] Setup complete > [ 18.088] (II) intel(0): [DRI2] DRI driver: i965 > [ 18.088] (II) intel(0): Allocated new frame buffer 1408x768 stride 5632, > tiled > [ 18.089] (II) UXA(0): Driver registered support for the following > operations: > [ 18.089] (II) solid > [ 18.089] (II) copy > [ 18.089] (II) composite (RENDER acceleration) > [ 18.089] (II) put_image > [ 18.089] (II) get_image > [ 18.089] (==) intel(0): Backing store disabled > [ 18.089] (==) intel(0): Silken mouse enabled > [ 18.089] (II) intel(0): Initializing HW Cursor > [ 18.089] (II) intel(0): RandR 1.2 enabled, ignore the following RandR > disabled message. > [ 18.090] (==) intel(0): DPMS enabled > [ 18.090] (==) intel(0): Intel XvMC decoder enabled > [ 18.090] (II) intel(0): Set up textured video > [ 18.090] (II) intel(0): [XvMC] xvmc_vld driver initialized. > [ 18.090] (II) intel(0): direct rendering: DRI2 Enabled > [ 18.266] (--) RandR disabled > [ 18.322] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer > [ 18.322] (II) AIGLX: enabled GLX_INTEL_swap_event > [ 18.322] (II) AIGLX: enabled GLX_ARB_create_context > [ 18.322] (II) AIGLX: enabled GLX_ARB_create_context_profile > [ 18.322] (II) AIGLX: enabled GLX_EXT_create_context_es2_profile > [ 18.322] (II) AIGLX: enabled GLX_SGI_swap_control and > GLX_MESA_swap_control > [ 18.322] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects > [ 18.322] (II) AIGLX: Loaded and initialized i965 > [ 18.322] (II) GLX: Initialized DRI2 GL provider for screen 0 > [ 18.323] (II) intel(0): Setting screen physical size to 361 x 203 > [ 18.389] (II) config/devd: Adding input device Keyboard () > [ 18.389] (**) Keyboard: Applying InputClass "kbd catchall" > [ 18.389] (II) LoadModule: "kbd" > [ 18.389] (II) Loading /usr/lib/xorg/modules/input/kbd_drv.so > [ 18.390] (II) Module kbd: vendor="X.Org Foundation" > [ 18.390] compiled for 1.14.5, module version = 1.8.0 > [ 18.390] Module class: X.Org XInput Driver > [ 18.390] ABI class: X.Org XInput driver, version 19.1 > [ 18.390] (II) Using input driver 'kbd' for 'Keyboard' > [ 18.390] (**) Keyboard: always reports core events > [ 18.390] (**) Keyboard: always reports core events > [ 18.390] (**) Option "Protocol" "standard" > [ 18.390] (WW) Option "Device" requires a string value > [ 18.390] (**) Option "XkbRules" "base" > [ 18.390] (**) Option "XkbModel" "pc105" > [ 18.390] (**) Option "XkbLayout" "us" > [ 18.390] (**) Option "config_info" "devd:atkbd0" > [ 18.390] (II) XINPUT: Adding extended input device "Keyboard" (type: > KEYBOARD, id 6) > [ 18.393] (II) config/devd: Adding input device Mouse (/dev/psm0) > [ 18.393] (**) Mouse: Applying InputClass "mouse catchall" > [ 18.393] (II) LoadModule: "mouse" > [ 18.394] (II) Loading /usr/lib/xorg/modules/input/mouse_drv.so > [ 18.395] (II) Module mouse: vendor="X.Org Foundation" > [ 18.395] compiled for 1.14.3, module version = 1.9.0 > [ 18.395] Module class: X.Org XInput Driver > [ 18.395] ABI class: X.Org XInput driver, version 19.1 > [ 18.395] (II) Using input driver 'mouse' for 'Mouse' > [ 18.395] (**) Mouse: always reports core events > [ 18.395] (**) Option "Device" "/dev/psm0" > [ 18.395] (==) Mouse: Protocol: "Auto" > [ 18.395] (**) Mouse: always reports core events > [ 18.452] (==) Mouse: Emulate3Buttons, Emulate3Timeout: 50 > [ 18.452] (**) Mouse: ZAxisMapping: buttons 4 and 5 > [ 18.452] (**) Mouse: Buttons: 9 > [ 18.452] (**) Option "config_info" "devd:psm0" > [ 18.452] (II) XINPUT: Adding extended input device "Mouse" (type: MOUSE, > id 7) > [ 18.452] (**) Mouse: (accel) keeping acceleration scheme 1 > [ 18.452] (**) Mouse: (accel) acceleration profile 0 > [ 18.452] (**) Mouse: (accel) acceleration factor: 2.000 > [ 18.452] (**) Mouse: (accel) acceleration threshold: 4 > [ 18.471] (II) Mouse: SetupAuto: hw.iftype is 3, hw.model is 0 > [ 18.471] (II) Mouse: SetupAuto: protocol is SysMouse > [ 18.489] (WW) fcntl(10, O_ASYNC): Inappropriate ioctl for device > [ 55.011] (II) intel(0): EDID vendor "LGD", prod id 728 > [ 55.011] (II) intel(0): Printing DDC gathered Modelines: > [ 55.011] (II) intel(0): Modeline "1366x768"x0.0 75.20 1366 1414 1478 > 1582 768 772 779 792 +hsync -vsync (47.5 kHz eP) > [ 55.503] (II) intel(0): EDID vendor "LGD", prod id 728 > [ 55.503] (II) intel(0): Printing DDC gathered Modelines: > [ 55.503] (II) intel(0): Modeline "1366x768"x0.0 75.20 1366 1414 1478 > 1582 768 772 779 792 +hsync -vsync (47.5 kHz eP) > [ 137.035] (II) config/devd: Adding input device 0x1241 USB Keyboard () > [ 137.036] (**) 0x1241 USB Keyboard: Applying InputClass "kbd catchall" > [ 137.036] (II) Using input driver 'kbd' for '0x1241 USB Keyboard' > [ 137.036] (**) 0x1241 USB Keyboard: always reports core events > [ 137.036] (**) 0x1241 USB Keyboard: always reports core events > [ 137.037] (**) Option "Protocol" "standard" > [ 137.037] (WW) Option "Device" requires a string value > [ 137.037] (**) Option "XkbRules" "base" > [ 137.037] (**) Option "XkbModel" "pc105" > [ 137.038] (**) Option "XkbLayout" "us" > [ 137.038] (**) Option "config_info" "devd:ukbd0" > [ 137.038] (II) XINPUT: Adding extended input device "0x1241 USB Keyboard" > (type: KEYBOARD, id 8) > [ 158.904] (II) config/dev: removing device 0x1241 USB Keyboard > [ 158.908] (II) UnloadModule: "kbd" > [ 181.384] (II) config/devd: Adding input device 0x1241 USB Keyboard () > [ 181.384] (**) 0x1241 USB Keyboard: Applying InputClass "kbd catchall" > [ 181.385] (II) Using input driver 'kbd' for '0x1241 USB Keyboard' > [ 181.385] (**) 0x1241 USB Keyboard: always reports core events > [ 181.385] (**) 0x1241 USB Keyboard: always reports core events > [ 181.385] (**) Option "Protocol" "standard" > [ 181.385] (WW) Option "Device" requires a string value > [ 181.385] (**) Option "XkbRules" "base" > [ 181.385] (**) Option "XkbModel" "pc105" > [ 181.385] (**) Option "XkbLayout" "us" > [ 181.385] (**) Option "config_info" "devd:ukbd0" > [ 181.386] (II) XINPUT: Adding extended input device "0x1241 USB Keyboard" > (type: KEYBOARD, id 8) > [ 288.115] (II) config/dev: removing device 0x1241 USB Keyboard > [ 288.121] (II) UnloadModule: "kbd" > [ 343.814] (II) config/devd: Adding input device 0x0566 USB Mouse > (/dev/ums0) > [ 343.814] (**) 0x0566 USB Mouse: Applying InputClass "mouse catchall" > [ 343.815] (II) Using input driver 'mouse' for '0x0566 USB Mouse' > [ 343.815] (**) 0x0566 USB Mouse: always reports core events > [ 343.815] (**) Option "Device" "/dev/ums0" > [ 343.815] (==) 0x0566 USB Mouse: Protocol: "Auto" > [ 343.815] (**) 0x0566 USB Mouse: always reports core events > [ 343.816] (==) 0x0566 USB Mouse: Emulate3Buttons, Emulate3Timeout: 50 > [ 343.816] (**) 0x0566 USB Mouse: ZAxisMapping: buttons 4 and 5 > [ 343.816] (**) 0x0566 USB Mouse: Buttons: 9 > [ 343.816] (**) Option "config_info" "devd:ums0" > [ 343.817] (II) XINPUT: Adding extended input device "0x0566 USB Mouse" > (type: MOUSE, id 8) > [ 343.817] (**) 0x0566 USB Mouse: (accel) keeping acceleration scheme 1 > [ 343.817] (**) 0x0566 USB Mouse: (accel) acceleration profile 0 > [ 343.817] (**) 0x0566 USB Mouse: (accel) acceleration factor: 2.000 > [ 343.817] (**) 0x0566 USB Mouse: (accel) acceleration threshold: 4 > [ 343.817] (II) 0x0566 USB Mouse: SetupAuto: hw.iftype is 5, hw.model is 0 > [ 343.817] (II) 0x0566 USB Mouse: SetupAuto: protocol is SysMouse > [ 343.817] (WW) fcntl(26, F_SETOWN): Inappropriate ioctl for device > [ 346.463] (II) config/dev: removing device 0x0566 USB Mouse > [ 346.464] (II) UnloadModule: "mouse" > [ 351.394] (II) config/devd: Adding input device 0x0566 USB Mouse > (/dev/ums0) > [ 351.394] (**) 0x0566 USB Mouse: Applying InputClass "mouse catchall" > [ 351.395] (II) Using input driver 'mouse' for '0x0566 USB Mouse' > [ 351.395] (**) 0x0566 USB Mouse: always reports core events > [ 351.395] (**) Option "Device" "/dev/ums0" > [ 351.396] (==) 0x0566 USB Mouse: Protocol: "Auto" > [ 351.396] (**) 0x0566 USB Mouse: always reports core events > [ 351.396] (==) 0x0566 USB Mouse: Emulate3Buttons, Emulate3Timeout: 50 > [ 351.397] (**) 0x0566 USB Mouse: ZAxisMapping: buttons 4 and 5 > [ 351.397] (**) 0x0566 USB Mouse: Buttons: 9 > [ 351.397] (**) Option "config_info" "devd:ums0" > [ 351.397] (II) XINPUT: Adding extended input device "0x0566 USB Mouse" > (type: MOUSE, id 8) > [ 351.398] (**) 0x0566 USB Mouse: (accel) keeping acceleration scheme 1 > [ 351.398] (**) 0x0566 USB Mouse: (accel) acceleration profile 0 > [ 351.398] (**) 0x0566 USB Mouse: (accel) acceleration factor: 2.000 > [ 351.398] (**) 0x0566 USB Mouse: (accel) acceleration threshold: 4 > [ 351.399] (II) 0x0566 USB Mouse: SetupAuto: hw.iftype is 5, hw.model is 0 > [ 351.399] (II) 0x0566 USB Mouse: SetupAuto: protocol is SysMouse > [ 351.399] (WW) fcntl(26, F_SETOWN): Inappropriate ioctl for device > [ 360.352] (II) config/dev: removing device 0x0566 USB Mouse > [ 360.353] (II) UnloadModule: "mouse" > [ 366.438] (II) config/devd: Adding input device 0x0566 USB Mouse > (/dev/ums0) > [ 366.438] (**) 0x0566 USB Mouse: Applying InputClass "mouse catchall" > [ 366.438] (II) Using input driver 'mouse' for '0x0566 USB Mouse' > [ 366.438] (**) 0x0566 USB Mouse: always reports core events > [ 366.438] (**) Option "Device" "/dev/ums0" > [ 366.438] (==) 0x0566 USB Mouse: Protocol: "Auto" > [ 366.438] (**) 0x0566 USB Mouse: always reports core events > [ 366.438] (==) 0x0566 USB Mouse: Emulate3Buttons, Emulate3Timeout: 50 > [ 366.439] (**) 0x0566 USB Mouse: ZAxisMapping: buttons 4 and 5 > [ 366.439] (**) 0x0566 USB Mouse: Buttons: 9 > [ 366.439] (**) Option "config_info" "devd:ums0" > [ 366.439] (II) XINPUT: Adding extended input device "0x0566 USB Mouse" > (type: MOUSE, id 8) > [ 366.439] (**) 0x0566 USB Mouse: (accel) keeping acceleration scheme 1 > [ 366.439] (**) 0x0566 USB Mouse: (accel) acceleration profile 0 > [ 366.439] (**) 0x0566 USB Mouse: (accel) acceleration factor: 2.000 > [ 366.439] (**) 0x0566 USB Mouse: (accel) acceleration threshold: 4 > [ 366.439] (II) 0x0566 USB Mouse: SetupAuto: hw.iftype is 5, hw.model is 0 > [ 366.439] (II) 0x0566 USB Mouse: SetupAuto: protocol is SysMouse > [ 366.439] (WW) fcntl(26, F_SETOWN): Inappropriate ioctl for device > [ 368.283] (II) config/dev: removing device 0x0566 USB Mouse > [ 368.284] (II) UnloadModule: "mouse" > > -- Robert Millan
diff -Nur -x .pc xorg-server-1.14.5.old/debian/control xorg-server-1.14.5/debian/control --- xorg-server-1.14.5.old/debian/control 2014-02-08 01:52:23.000000000 +0100 +++ xorg-server-1.14.5/debian/control 2014-02-08 01:53:10.249920492 +0100 @@ -49,8 +49,6 @@ libpciaccess-dev (>= 0.12.901), libgcrypt-dev, nettle-dev, - libdbus-1-dev [kfreebsd-any], - libhal-dev [kfreebsd-any], libudev-dev (>= 151-3) [linux-any], libselinux1-dev (>= 2.0.80) [linux-any], libaudit-dev [linux-any], @@ -90,6 +88,7 @@ xserver-common (>= ${source:Version}), keyboard-configuration [linux-any kfreebsd-any], udev (>= 149) [linux-any], + devd [kfreebsd-any], ${shlibs:Depends}, ${misc:Depends}, Recommends: libgl1-mesa-dri (>= 7.10.2-4) @@ -150,6 +149,7 @@ x11-xkb-utils-udeb, # disabled: keyboard-configuration [linux-any kfreebsd-any], udev-udeb (>= 149) [linux-any], + devd-udeb [kfreebsd-any], ${shlibs:Depends}, ${misc:Depends}, Provides: diff -Nur -x .pc xorg-server-1.14.5.old/debian/patches/devd.diff xorg-server-1.14.5/debian/patches/devd.diff --- xorg-server-1.14.5.old/debian/patches/devd.diff 1970-01-01 01:00:00.000000000 +0100 +++ xorg-server-1.14.5/debian/patches/devd.diff 2014-02-08 01:58:26.401912887 +0100 @@ -0,0 +1,649 @@ +--- /dev/null ++++ b/config/devd.c +@@ -0,0 +1,524 @@ ++/* ++ * Copyright © 2012 Baptiste Daroussin ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Author: Baptiste Daroussin <b...@freebsd.org> ++ */ ++ ++#ifdef HAVE_DIX_CONFIG_H ++#include <dix-config.h> ++#endif ++ ++#include <sys/types.h> ++#include <sys/socket.h> ++#include <sys/sysctl.h> ++#include <sys/un.h> ++ ++#include <ctype.h> ++#include <stdlib.h> ++#include <stdio.h> ++#include <stdarg.h> ++#include <stdbool.h> ++#include <unistd.h> ++ ++#include "input.h" ++#include "inputstr.h" ++#include "hotplug.h" ++#include "config-backends.h" ++#include "os.h" ++ ++#define DEVD_SOCK_PATH "/var/run/devd.pipe" ++ ++#define DEVD_EVENT_ADD '+' ++#define DEVD_EVENT_REMOVE '-' ++ ++static int sock_devd = -1; ++ ++#if XORG_VERSION_CURRENT < 10800000 ++enum { ++ ATTR_KEYBOARD, ++ ATTR_POINTER, ++ ATTR_JOYSTICK, ++ ATTR_TOUCHPAD, ++ ATTR_TOUCHSCREEN, ++}; ++#endif ++ ++struct hw_type { ++ const char *driver; ++ int flag; ++ const char *xdriver; ++}; ++ ++static struct hw_type hw_types[] = { ++// { "ukbd", ATTR_KEYBOARD, "kdb" }, ++// { "atkbd", ATTR_KEYBOARD, "kdb" }, ++ { "ums", ATTR_POINTER, "mouse" }, ++ { "psm", ATTR_POINTER, "mouse" }, ++// { "uhid", ATTR_POINTER, "mouse" }, ++ { "joy", ATTR_JOYSTICK, NULL }, ++ { "atp", ATTR_TOUCHPAD, NULL }, ++ { "uep", ATTR_TOUCHSCREEN, NULL }, ++ { NULL, -1, NULL }, ++}; ++ ++#if XORG_VERSION_CURRENT < 10800000 ++static void ++add_option(InputOption **options, const char *key, const char *value) ++{ ++ if (!value || *value == '\0') ++ return; ++ ++ for (; *options; options = &(*options)->next) ++ ; ++ *options = calloc(sizeof(**options), 1); ++ if (!*options) /* Yeesh. */ ++ return; ++ (*options)->key = xstrdup(key); ++ (*options)->value = xstrdup(value); ++ (*options)->next = NULL; ++} ++ ++static void ++remove_device(DeviceIntPtr dev) ++{ ++ /* this only gets called for devices that have already been added */ ++ LogMessage(X_INFO, "config/devd: removing device %s\n", dev->name); ++ ++ /* Call PIE here so we don't try to dereference a device that's ++ * already been removed. */ ++ OsBlockSignals(); ++ ProcessInputEvents(); ++ DeleteInputDeviceRequest(dev); ++ OsReleaseSignals(); ++} ++ ++static bool ++device_is_duplicate(char *config_info) ++{ ++ DeviceIntPtr dev; ++ ++ for (dev = inputInfo.devices; dev; dev = dev->next) ++ if (dev->config_info && (strcmp(dev->config_info, config_info) == 0)) ++ return true; ++ ++ for (dev = inputInfo.off_devices; dev; dev = dev->next) ++ if (dev->config_info && (strcmp(dev->config_info, config_info) == 0)) ++ return true; ++ ++ return false; ++} ++ ++#endif ++ ++static bool ++sysctl_exists(const char *format, ...) ++{ ++ va_list args; ++ char *name = NULL; ++ size_t len; ++ int ret; ++ ++ if (format == NULL) ++ return false; ++ ++ va_start(args, format); ++ vasprintf(&name, format, args); ++ va_end(args); ++ ++ ret = sysctlbyname(name, NULL, &len, NULL, 0); ++ ++ if (ret == -1) ++ len = 0; ++ ++ free(name); ++ return (len > 0); ++} ++ ++static char * ++sysctl_get_str(const char *format, ...) ++{ ++ va_list args; ++ char *name = NULL; ++ char *dest = NULL; ++ size_t len; ++ ++ if (format == NULL) ++ return NULL; ++ ++ va_start(args, format); ++ vasprintf(&name, format, args); ++ va_end(args); ++ ++ if (sysctlbyname(name, NULL, &len, NULL, 0) == 0) { ++ dest = malloc(len + 1); ++ if (sysctlbyname(name, dest, &len, NULL, 0) == 0) ++ dest[len] = '\0'; ++ else { ++ free(dest); ++ dest = NULL; ++ } ++ } ++ ++ free(name); ++ return dest; ++} ++ ++static void ++keyboard_added() ++{ ++ InputOption *options = NULL; ++ InputAttributes attrs = {}; ++ DeviceIntPtr dev = NULL; ++ int rc; ++ ++ options = input_option_new(NULL, "_source", "server/devd"); ++ if (!options) ++ return; ++ ++ options = input_option_new(options, "name", xstrdup("AT Keyboard")); ++ options = input_option_new(options, "path", xstrdup("")); ++ options = input_option_new(options, "device", xstrdup("")); ++ options = input_option_new(options, "config_info", xstrdup("devd:AT Keyboard")); ++ ++ LogMessage(X_INFO, "config/devd: Adding AT Keyboard\n"); ++ ++ memset(&attrs, 0, sizeof(attrs)); ++ attrs.flags = ATTR_KEYBOARD; ++ attrs.vendor = xstrdup("(unnamed)"); ++ attrs.product = xstrdup("(unnamed)"); ++ ++ rc = NewInputDeviceRequest(options, &attrs, &dev); ++ ++ if (rc != Success) ++ goto unwind; ++ ++ return; ++ ++ unwind: ++ input_option_free_list(&options); ++ free(attrs.vendor); ++ free(attrs.product); ++ return; ++} ++ ++static void ++device_added(char *line) ++{ ++ char *walk; ++ char *path; ++ char *vendor; ++ char *product = NULL; ++ char *config_info = NULL; ++ InputOption *options = NULL; ++#if XORG_VERSION_CURRENT > 10800000 ++ InputAttributes attrs = {}; ++#else ++ InputOption *tmpo; ++#endif ++ DeviceIntPtr dev = NULL; ++ int i, rc; ++ ++ walk = strchr(line, ' '); ++ if (walk != NULL) ++ walk[0] = '\0'; ++ ++ for (i = 0; hw_types[i].driver != NULL; i++) { ++ if (strncmp(line, hw_types[i].driver, ++ strlen(hw_types[i].driver)) == 0 && ++ isdigit(*(line + strlen(hw_types[i].driver)))) { ++#if XORG_VERSION_CURRENT > 10800000 ++ attrs.flags |= hw_types[i].flag; ++#endif ++ break; ++ } ++ } ++ if (hw_types[i].driver == NULL) { ++ LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n", line); ++ return; ++ } ++ ++#if XORG_VERSION_CURRENT < 10800000 ++ if (hw_types[i].xdriver == NULL) { ++ LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n", line); ++ return; ++ } ++#endif ++ ++ if (asprintf(&path, "/dev/%s", line) == -1) ++ return; ++ ++#if XORG_VERSION_CURRENT < 10800000 ++ options = calloc(sizeof(*options), 1); ++ if (!options) ++ return; ++ ++ add_option(&options, "_source", "server/devd"); ++#else ++ options = input_option_new(NULL, "_source", "server/devd"); ++ if (!options) ++ return; ++#endif ++ ++ vendor = sysctl_get_str("dev.%s.%s.%%desc", hw_types[i].driver, line + strlen(hw_types[i].driver)); ++ if (vendor == NULL) { ++#if XORG_VERSION_CURRENT > 10800000 ++ attrs.vendor = strdup("(unnamed)"); ++#endif ++ } else { ++ if ((product = strchr(vendor, ' ')) != NULL) { ++ product[0] = '\0'; ++ product++; ++ } ++#if XORG_VERSION_CURRENT > 10800000 ++ attrs.vendor = strdup(vendor); ++#endif ++ if (product != NULL && (walk = strchr(product, ',')) != NULL) ++ walk[0] = '\0'; ++#if XORG_VERSION_CURRENT > 10800000 ++ attrs.product = strdup(product != NULL ? product : "(unnamed)"); ++ options = input_option_new(options, "name", product != NULL ? product : "(unnamed)"); ++#else ++ add_option(&options, "name", product != NULL ? product : "(unnamed)"); ++#endif ++ } ++#if XORG_VERSION_CURRENT > 10800000 ++ attrs.usb_id = NULL; ++ options = input_option_new(options, "path", xstrdup(path)); ++ options = input_option_new(options, "device", path); ++#else ++ add_option(&options, "path", xstrdup(path)); ++ add_option(&options, "device", path); ++#endif ++ ++#if XORG_VERSION_CURRENT < 10800000 ++ add_option(&options, "driver", hw_types[i].xdriver); ++#endif ++ ++ if (asprintf(&config_info, "devd:%s", line) == -1) { ++ config_info = NULL; ++ goto unwind; ++ } ++ ++ if (device_is_duplicate(config_info)) { ++ LogMessage(X_WARNING, "config/devd: device %s already added. " ++ "Ignoring.\n", product != NULL ? product : "(unnamed)"); ++ goto unwind; ++ } ++ ++#if XORG_VERSION_CURRENT < 10800000 ++ add_option(&options, "config_info", config_info); ++#else ++ options = input_option_new(options, "config_info", config_info); ++#endif ++ LogMessage(X_INFO, "config/devd: Adding input device %s (%s)\n", ++ product != NULL ? product : "(unnamed)", path); ++ ++#if XORG_VERSION_CURRENT > 10800000 ++ rc = NewInputDeviceRequest(options, &attrs, &dev); ++#else ++ rc = NewInputDeviceRequest(options, &dev); ++#endif ++ ++ if (rc != Success) ++ goto unwind; ++ ++ unwind: ++ free(config_info); ++#if XORG_VERSION_CURRENT < 10800000 ++ while ((tmpo = options)) { ++ options = tmpo->next; ++ free(tmpo->key); /* NULL if dev != NULL */ ++ free(tmpo->value); /* NULL if dev != NULL */ ++ free(tmpo); ++ } ++#else ++ input_option_free_list(&options); ++#endif ++ ++#if XORG_VERSION_CURRENT > 10800000 ++ free(attrs.usb_id); ++ free(attrs.product); ++ free(attrs.device); ++ free(attrs.vendor); ++#endif ++ ++ return; ++} ++ ++static void ++device_removed(char *line) ++{ ++ char *walk; ++ char *value; ++#if XORG_VERSION_CURRENT < 10800000 ++ DeviceIntPtr dev, next; ++#endif ++ ++ walk = strchr(line, ' '); ++ if (walk != NULL) ++ walk[0] = '\0'; ++ ++ if (asprintf(&value, "devd:%s", line) == -1) ++ return; ++ ++#if XORG_VERSION_CURRENT > 10800000 ++ remove_devices("dev", value); ++#else ++ for (dev = inputInfo.devices; dev; dev = next) { ++ next = dev->next; ++ if (dev->config_info && strcmp(dev->config_info, value) == 0) ++ remove_device(dev); ++ } ++ for (dev = inputInfo.off_devices; dev; dev = next) { ++ next = dev->next; ++ if (dev->config_info && strcmp(dev->config_info, value) == 0) ++ remove_device(dev); ++ } ++#endif ++ ++ free(value); ++} ++ ++static ssize_t ++socket_getline(int fd, char **out) ++{ ++ char *buf; ++ ssize_t ret, cap, sz = 0; ++ char c; ++ ++ cap = 1024; ++ buf = malloc(cap * sizeof(char)); ++ if (!buf) ++ return -1; ++ ++ for (;;) { ++ ret = read(sock_devd, &c, 1); ++ if (ret < 1) { ++ free(buf); ++ return -1; ++ } ++ ++ if (c == '\n') ++ break; ++ ++ if (sz + 1 >= cap) { ++ cap *= 2; ++ buf = realloc(buf, cap *sizeof(char)); ++ } ++ buf[sz] = c; ++ sz++; ++ } ++ ++ buf[sz] = '\0'; ++ if (sz >= 0) ++ *out = buf; ++ else ++ free(buf); ++ ++ return sz; /* number of bytes in the line, not counting the line break*/ ++} ++ ++static void ++wakeup_handler(pointer data, int err, pointer read_mask) ++{ ++ char *line = NULL; ++ ++ if (err < 0) ++ return; ++ ++ if (FD_ISSET(sock_devd, (fd_set *)read_mask)) { ++ if (socket_getline(sock_devd, &line) < 0) ++ return; ++ ++ switch(*line) { ++ case DEVD_EVENT_ADD: ++ device_added(line+1); ++ break; ++ case DEVD_EVENT_REMOVE: ++ device_removed(line+1); ++ break; ++ default: ++ break; ++ } ++ free(line); ++ } ++} ++ ++static void ++block_handler(pointer data, struct timeval **tv, pointer read_mask) ++{ ++} ++ ++int ++config_devd_init(void) ++{ ++ struct sockaddr_un devd; ++ char devicename[1024]; ++ int i, j; ++ ++ /* For keyboards, we don't want to open the actual device, because ++ we only need input from the VT that X is running on (see ++ xf86OpenConsole() in bsd_init.c). However, we still want ++ kbd_drv to be loaded, hence this dummy function which registers ++ a keyboard with zero-length device path. */ ++ keyboard_added(); ++ ++ /* first scan the sysctl to determine the hardware if needed */ ++ ++ for (i = 0; hw_types[i].driver != NULL; i++) { ++ for (j = 0; sysctl_exists("dev.%s.%i.%%desc", hw_types[i].driver, j); j++) { ++ snprintf(devicename, 1024, "%s%i", hw_types[i].driver, j); ++ device_added(devicename); ++ } ++ ++ } ++ sock_devd = socket(AF_UNIX, SOCK_STREAM, 0); ++ if (sock_devd < 0) { ++ ErrorF("config/devd: Fail opening stream socket"); ++ return 0; ++ } ++ ++ devd.sun_family = AF_UNIX; ++ strlcpy(devd.sun_path, DEVD_SOCK_PATH, sizeof(devd.sun_path)); ++ ++ if (connect(sock_devd, (struct sockaddr *) &devd, sizeof(struct sockaddr_un)) < 0) { ++ close(sock_devd); ++ ErrorF("config/devd: Fail to connect to devd"); ++ return 0; ++ } ++ ++ RegisterBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL); ++ AddGeneralSocket(sock_devd); ++ ++ return 1; ++} ++ ++void ++config_devd_fini(void) ++{ ++ if (sock_devd < 0) ++ return; ++ ++ RemoveGeneralSocket(sock_devd); ++ RemoveBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL); ++ close(sock_devd); ++} +--- a/config/Makefile.am ++++ b/config/Makefile.am +@@ -40,6 +40,10 @@ + libconfig_la_SOURCES += wscons.c + endif # CONFIG_WSCONS + ++if CONFIG_DEVD ++libconfig_la_SOURCES += devd.c ++endif ++ + endif # CONFIG_NEED_DBUS + + endif # !CONFIG_UDEV +--- a/config/config-backends.h ++++ b/config/config-backends.h +@@ -75,3 +75,8 @@ + int config_wscons_init(void); + void config_wscons_fini(void); + #endif ++ ++#ifdef CONFIG_DEVD ++int config_devd_init(void); ++void config_devd_fini(void); ++#endif +--- a/config/config.c ++++ b/config/config.c +@@ -64,6 +64,9 @@ + #elif defined(CONFIG_WSCONS) + if (!config_wscons_init()) + ErrorF("[config] failed to initialise wscons\n"); ++#elif defined(CONFIG_DEVD) ++ if (!config_devd_init()) ++ ErrorF("[config] failed to initialise devd\n"); + #endif + } + +@@ -82,6 +85,8 @@ + config_dbus_core_fini(); + #elif defined(CONFIG_WSCONS) + config_wscons_fini(); ++#elif defined(CONFIG_DEVD) ++ config_devd_fini(); + #endif + } + +--- a/configure.ac ++++ b/configure.ac +@@ -619,6 +619,7 @@ + AC_ARG_ENABLE(config-udev-kms, AS_HELP_STRING([--enable-config-udev-kms], [Build udev kms support (default: auto)]), [CONFIG_UDEV_KMS=$enableval], [CONFIG_UDEV_KMS=auto]) + AC_ARG_ENABLE(config-dbus, AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no]) + AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto]) ++AC_ARG_ENABLE(config-devd, AS_HELP_STRING([--disable-config-devd], [Build devd support (default: auto)]), [CONFIG_DEVD=$enableval], [CONFIG_DEVD=auto]) + AC_ARG_ENABLE(config-wscons, AS_HELP_STRING([--enable-config-wscons], [Build wscons config support (default: auto)]), [CONFIG_WSCONS=$enableval], [CONFIG_WSCONS=auto]) + AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes]) + AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes]) +@@ -915,6 +916,21 @@ + AC_DEFINE(CONFIG_WSCONS, 1, [Use wscons for input auto configuration]) + fi + ++if test "x$CONFIG_DEVD" = xauto; then ++ case $host_os in ++ freebsd* | kfreebsd*-gnu) ++ CONFIG_DEVD=yes; ++ ;; ++ *) ++ CONFIG_DEVD=no; ++ ;; ++ esac ++fi ++AM_CONDITIONAL(CONFIG_DEVD, [test "x$CONFIG_DEVD" = xyes]) ++if test "x$CONFIG_DEVD" = xyes; then ++ AC_DEFINE(CONFIG_DEVD, 1, [Use devd for input auto configuration]) ++fi ++ + if test "x$USE_SIGIO_BY_DEFAULT" = xyes; then + USE_SIGIO_BY_DEFAULT_VALUE=TRUE + else +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -1376,15 +1376,17 @@ + } + + if (!xf86Info.forceInputDevices && !(foundPointer && foundKeyboard)) { +-#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) ++#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || defined(CONFIG_HAL) + const char *config_backend; + + #if defined(CONFIG_HAL) + config_backend = "HAL"; + #elif defined(CONFIG_UDEV) + config_backend = "udev"; +-#else ++#elif defined(CONFIG_WSCONS) + config_backend = "wscons"; ++#elif defined(CONFIG_DEVD) ++ config_backend = "devd"; + #endif + xf86Msg(X_INFO, "The server relies on %s to provide the list of " + "input devices.\n\tIf no devices become available, " +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -123,7 +123,7 @@ + .log = LogNone, + .disableRandR = FALSE, + .randRFrom = X_DEFAULT, +-#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) ++#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || defined(CONFIG_DEVD) + .forceInputDevices = FALSE, + .autoAddDevices = TRUE, + .autoEnableDevices = TRUE, +--- a/include/dix-config.h.in ++++ b/include/dix-config.h.in +@@ -411,6 +411,9 @@ + /* Support HAL for hotplug */ + #undef CONFIG_HAL + ++/* Support devd for hotplug */ ++#undef CONFIG_DEVD ++ + /* Have a monotonic clock from clock_gettime() */ + #undef MONOTONIC_CLOCK + diff -Nur -x .pc xorg-server-1.14.5.old/debian/patches/series xorg-server-1.14.5/debian/patches/series --- xorg-server-1.14.5.old/debian/patches/series 2014-02-08 01:52:23.000000000 +0100 +++ xorg-server-1.14.5/debian/patches/series 2014-02-08 01:53:10.260920680 +0100 @@ -7,3 +7,4 @@ 08_xfree86_fix_ia64_inx_outx.diff os-move-arpa-inet.h-for-any-win32-system.patch xfree86-hurd-include-hurd.h.patch +devd.diff diff -Nur -x .pc xorg-server-1.14.5.old/debian/rules xorg-server-1.14.5/debian/rules --- xorg-server-1.14.5.old/debian/rules 2014-02-08 01:52:23.000000000 +0100 +++ xorg-server-1.14.5/debian/rules 2014-02-08 01:55:28.331918289 +0100 @@ -57,17 +57,15 @@ dri = --enable-dri --enable-dri2 endif -config_backend = --disable-config-dbus +config_backend = --disable-config-dbus --disable-config-hal ifeq ($(DEB_HOST_ARCH_OS), linux) - config_backend += --enable-config-udev --disable-config-hal + config_backend += --enable-config-udev else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) config_backend += --disable-config-udev - config_backend_main += --enable-config-hal - config_backend_udeb += --disable-config-hal libs = $(shell pkg-config --libs libbsd-overlay) cppflags = $(shell pkg-config --cflags libbsd-overlay) else # hurd - config_backend += --disable-config-udev --disable-config-hal + config_backend += --disable-config-udev endif vars = $(shell DEB_BUILD_MAINT_OPTIONS="hardening=+pie" DEB_LDFLAGS_MAINT_APPEND="-Wl,-Bsymbolic" DEB_CPPFLAGS_MAINT_APPEND="-DPRE_RELEASE=0 $(cppflags)" dpkg-buildflags --export=configure) LIBS="$(libs)"