open-src/driver/xf86-input-keyboard/leds.patch
author Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
Thu, 19 Jan 2012 18:22:14 -0800
changeset 1240 12852db78e0e
permissions -rw-r--r--
6892399 Keyboard LEDs do not function under Xorg on SPARC

From ed35abe0da1a9134ee126df88608b33892ae4313 Mon Sep 17 00:00:00 2001
From: Alan Coopersmith <[email protected]>
Date: Wed, 18 Jan 2012 18:13:08 -0800
Subject: [PATCH:xf86-input-keyboard] Solaris: Use uchar_t, not int, for led masks in KIOCSLED/KIOCGLED ioctls

Avoids checking/setting the wrong bits on big endian machines like SPARC.

Signed-off-by: Alan Coopersmith <[email protected]>
---
 src/sun_kbd.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/sun_kbd.c b/src/sun_kbd.c
index a240087..5f7b5c6 100644
--- a/src/sun_kbd.c
+++ b/src/sun_kbd.c
@@ -70,8 +70,9 @@ static void
 sunKbdSetLeds(InputInfoPtr pInfo, int leds)
 {
     int i;
+    uchar_t setleds = (uchar_t) (leds & 0xFF);
 
-    SYSCALL(i = ioctl(pInfo->fd, KIOCSLED, &leds));
+    SYSCALL(i = ioctl(pInfo->fd, KIOCSLED, &setleds));
     if (i < 0) {
 	xf86Msg(X_ERROR, "%s: Failed to set keyboard LED's: %s\n",
                 pInfo->name, strerror(errno));
@@ -82,14 +83,15 @@ sunKbdSetLeds(InputInfoPtr pInfo, int leds)
 static int
 sunKbdGetLeds(InputInfoPtr pInfo)
 {
-    int i, leds = 0;
+    int i;
+    uchar_t leds = 0;
 
     SYSCALL(i = ioctl(pInfo->fd, KIOCGLED, &leds));
     if (i < 0) {
         xf86Msg(X_ERROR, "%s: Failed to get keyboard LED's: %s\n",
                 pInfo->name, strerror(errno));
     }
-    return leds;
+    return (int) leds;
 }
 
 
-- 
1.7.3.2