Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-09-22 11:10:46

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

W nawiązaniu do topika: http://forum.dug.net.pl/viewtopic.php?pid=211386#p211386 na który nikt mi nie odpowiedział poczyniłem ciekawego odkrycia. Mianowicie postanowiłem samodzielnie skompilować Lirca myśląc, że może paczka z repo robi mi takie jaja, dlatego odinstalowałem z systemu wszystko co jest z Lircem związane, usunąłem cały katalog Lirc z /etc i skompilowałem źródła Lirca. Jakież było moje zdziwienie, gdy okazało się, że mogę dalej sterować kompa pilotem, ale tylko te klawisze co poprzednio: ( 0,1,2,3,4,5,6,7,8,9. ok, prawo, lewo, góra, dół, mute volume up volume down, list, rec, play/pause, oraz szybkie przewijanie w przód i tył) Szkopuł jednak w tym, że Lirc nie jest w ogóle skonfigurowany BO NIE MA W OGÓLE KATALOGU /etc/lirc i jego zawartości. Dlatego okazuje się, że mogłem sobie poprzednio na rózne sposoby konfigurować  pliki hardware. conf i lirc. conf i nic to nie działało bo u mnie na kompie konfiguracja Lirca musi w takim razie siedzieć gdzie indziej, tylko w takim razie gdzie? Czy ktoś mi to pomoże zrozumieć? O co tu chodzi? Jak to jest możliwe? Gdzie mogę mieć zapisaną konfigurację Lirca skoro po jego zainstalowaniu bez jakiejkolwiek konfiguracji komp wykrywa i reaguje na wyżej wymienione przyciski?

Offline

 

#2  2012-09-22 12:19:41

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Piloty są z reguły wykrywane jako klawiatury, więc część klawiszy działa bez dodatkowych kombinacji. Można to potwierdzić uruchamiając program xev i wciskając przyciski na pilocie. Co do lirca - nie pomogę.


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#3  2012-09-22 22:56:53

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

no faktycznie xev reaguje na przyciski pilota bez nawet instalacji lirca, to chyba sprawka pakietu kremotecontrol, może jego by skonfigurować, tylko, że nie wiem gdzie on ma plik konfiguracyjny.

Offline

 

#4  2012-09-23 02:36:46

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

To zachowanie bardziej niskopoziomowe. Przyciski można zmapować jako klawisze np. za pomocą xmodmap, tyle że prawdopodobnie nie wszystkie będą miały swój sensowny odpowiednik w dostępnych klawiszach multimedialnych (/usr/include/X11/XF86keysym.h).


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#5  2012-09-23 08:49:29

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Chyba błędny trop, u mnie w tym pliku mam raczej coś o językach:

Kod:

/***********************************************************

Copyright 1987, 1998  The Open Group

Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.

The above copyright notice and this permission notice 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
OPEN GROUP 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.

Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

/* default keysyms */
#define XK_MISCELLANY
#define XK_XKB_KEYS
#define XK_LATIN1
#define XK_LATIN2
#define XK_LATIN3
#define XK_LATIN4
#define XK_LATIN8
#define XK_LATIN9
#define XK_CAUCASUS
#define XK_GREEK
#define XK_KATAKANA
#define XK_ARABIC
#define XK_CYRILLIC
#define XK_HEBREW
#define XK_THAI
#define XK_KOREAN
#define XK_ARMENIAN
#define XK_GEORGIAN
#define XK_VIETNAMESE
#define XK_CURRENCY
#define XK_MATHEMATICAL
#define XK_BRAILLE
#define XK_SINHALA

#include <X11/keysymdef.h>

Nadmienię jeszcze że mój system to kubuntu 12.04, czyli taki nie do końca debian :)

Offline

 

#6  2012-09-23 14:38:53

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

W Debianie jest to [url=http://cgit.freedesktop.org/xorg/proto/x11proto/tree/XF86keysym.h]ten[/url] plik, jednak nie wiem, czy nie lepiej by było popracować nad lircem, choć tu będzie musiał pomóc ktoś inny.


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#7  2012-09-24 10:14:19

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Jakieś pomysły gdzie może być ten plik w Kubuntu? Wolę tutaj skonfigurować pilota  bo jest to prostsze, nie trzeba się bawić w konfigurację Lirca, wystarczy tylko ustawić skróty klawiaturowe dla każdej aplikacji i spokój, przy zmianie skrótu klawiaturowego system przechwytuje klawisze z pilota bez problemu i nie trzeba tworzyć osobnej konfiguracji z osobna dla lirca w .lirccd

Offline

 

#8  2012-09-24 22:48:52

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Dobra przepraszam, mój błąd siedziałem aż do teraz aż go wypatrzyłem i okazało się, że mam ten plik w /usr/include/X11/
Wygląda on u mnie tak:

Kod:

/*
 * XFree86 vendor specific keysyms.
 *
 * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.
 *
 * When adding new entries, the xc/lib/XKeysymDB file should also be
 * updated to make the new entries visible to Xlib.
 */

/*
 * ModeLock
 *
 * This one is old, and not really used any more since XKB offers this
 * functionality.
 */

#define XF86XK_ModeLock        0x1008FF01    /* Mode Switch Lock */

/*
 * Note, 0x1008FF07 - 0x1008FF0F are free and should be used for misc new
 * keysyms that don't fit into any of the groups below.
 *
 * 0x1008FF64, 0x1008FF6F, 0x1008FF71, 0x1008FF83 are no longer used,
 * and should be used first for new keysyms.
 *
 * Check in keysymdef.h for generic symbols before adding new XFree86-specific
 * symbols here.
 *
 * X.Org will not be adding to the XF86 set of keysyms, though they have
 * been adopted and are considered a "standard" part of X keysym definitions.
 * XFree86 never properly commented these keysyms, so we have done our
 * best to explain the semantic meaning of these keys.
 *
 * XFree86 has removed their mail archives of the period, that might have
 * shed more light on some of these definitions. Until/unless we resurrect
 * these archives, these are from memory and usage.
 */


/* Backlight controls. */
#define XF86XK_MonBrightnessUp   0x1008FF02  /* Monitor/panel brightness */
#define XF86XK_MonBrightnessDown 0x1008FF03  /* Monitor/panel brightness */
#define XF86XK_KbdLightOnOff     0x1008FF04  /* Keyboards may be lit     */
#define XF86XK_KbdBrightnessUp   0x1008FF05  /* Keyboards may be lit     */
#define XF86XK_KbdBrightnessDown 0x1008FF06  /* Keyboards may be lit     */

/*
 * Keys found on some "Internet" keyboards.
 */
#define XF86XK_Standby        0x1008FF10   /* System into standby mode   */
#define XF86XK_AudioLowerVolume    0x1008FF11   /* Volume control down        */
#define XF86XK_AudioMute    0x1008FF12   /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume    0x1008FF13   /* Volume control up          */
#define XF86XK_AudioPlay    0x1008FF14   /* Start playing of audio >   */
#define XF86XK_AudioStop    0x1008FF15   /* Stop playing audio         */
#define XF86XK_AudioPrev    0x1008FF16   /* Previous track             */
#define XF86XK_AudioNext    0x1008FF17   /* Next track                 */
#define XF86XK_HomePage        0x1008FF18   /* Display user's home page   */
#define XF86XK_Mail        0x1008FF19   /* Invoke user's mail program */
#define XF86XK_Start        0x1008FF1A   /* Start application          */
#define XF86XK_Search        0x1008FF1B   /* Search                     */
#define XF86XK_AudioRecord    0x1008FF1C   /* Record audio application   */

/* These are sometimes found on PDA's (e.g. Palm, PocketPC or elsewhere)   */
#define XF86XK_Calculator    0x1008FF1D   /* Invoke calculator program  */
#define XF86XK_Memo        0x1008FF1E   /* Invoke Memo taking program */
#define XF86XK_ToDoList        0x1008FF1F   /* Invoke To Do List program  */
#define XF86XK_Calendar        0x1008FF20   /* Invoke Calendar program    */
#define XF86XK_PowerDown    0x1008FF21   /* Deep sleep the system      */
#define XF86XK_ContrastAdjust    0x1008FF22   /* Adjust screen contrast     */
#define XF86XK_RockerUp        0x1008FF23   /* Rocker switches exist up   */
#define XF86XK_RockerDown    0x1008FF24   /* and down                   */
#define XF86XK_RockerEnter    0x1008FF25   /* and let you press them     */

/* Some more "Internet" keyboard symbols */
#define XF86XK_Back        0x1008FF26   /* Like back on a browser     */
#define XF86XK_Forward        0x1008FF27   /* Like forward on a browser  */
#define XF86XK_Stop        0x1008FF28   /* Stop current operation     */
#define XF86XK_Refresh        0x1008FF29   /* Refresh the page           */
#define XF86XK_PowerOff        0x1008FF2A   /* Power off system entirely  */
#define XF86XK_WakeUp        0x1008FF2B   /* Wake up system from sleep  */
#define XF86XK_Eject            0x1008FF2C   /* Eject device (e.g. DVD)    */
#define XF86XK_ScreenSaver      0x1008FF2D   /* Invoke screensaver         */
#define XF86XK_WWW              0x1008FF2E   /* Invoke web browser         */
#define XF86XK_Sleep            0x1008FF2F   /* Put system to sleep        */
#define XF86XK_Favorites    0x1008FF30   /* Show favorite locations    */
#define XF86XK_AudioPause    0x1008FF31   /* Pause audio playing        */
#define XF86XK_AudioMedia    0x1008FF32   /* Launch media collection app */
#define XF86XK_MyComputer    0x1008FF33   /* Display "My Computer" window */
#define XF86XK_VendorHome    0x1008FF34   /* Display vendor home web site */
#define XF86XK_LightBulb    0x1008FF35   /* Light bulb keys exist       */
#define XF86XK_Shop        0x1008FF36   /* Display shopping web site   */
#define XF86XK_History        0x1008FF37   /* Show history of web surfing */
#define XF86XK_OpenURL        0x1008FF38   /* Open selected URL           */
#define XF86XK_AddFavorite    0x1008FF39   /* Add URL to favorites list   */
#define XF86XK_HotLinks        0x1008FF3A   /* Show "hot" links            */
#define XF86XK_BrightnessAdjust    0x1008FF3B   /* Invoke brightness adj. UI   */
#define XF86XK_Finance        0x1008FF3C   /* Display financial site      */
#define XF86XK_Community    0x1008FF3D   /* Display user's community    */
#define XF86XK_AudioRewind    0x1008FF3E   /* "rewind" audio track        */
#define XF86XK_BackForward    0x1008FF3F   /* ??? */
#define XF86XK_Launch0        0x1008FF40   /* Launch Application          */
#define XF86XK_Launch1        0x1008FF41   /* Launch Application          */
#define XF86XK_Launch2        0x1008FF42   /* Launch Application          */
#define XF86XK_Launch3        0x1008FF43   /* Launch Application          */
#define XF86XK_Launch4        0x1008FF44   /* Launch Application          */
#define XF86XK_Launch5        0x1008FF45   /* Launch Application          */
#define XF86XK_Launch6        0x1008FF46   /* Launch Application          */
#define XF86XK_Launch7        0x1008FF47   /* Launch Application          */
#define XF86XK_Launch8        0x1008FF48   /* Launch Application          */
#define XF86XK_Launch9        0x1008FF49   /* Launch Application          */
#define XF86XK_LaunchA        0x1008FF4A   /* Launch Application          */
#define XF86XK_LaunchB        0x1008FF4B   /* Launch Application          */
#define XF86XK_LaunchC        0x1008FF4C   /* Launch Application          */
#define XF86XK_LaunchD        0x1008FF4D   /* Launch Application          */
#define XF86XK_LaunchE        0x1008FF4E   /* Launch Application          */
#define XF86XK_LaunchF        0x1008FF4F   /* Launch Application          */

#define XF86XK_ApplicationLeft    0x1008FF50   /* switch to application, left */
#define XF86XK_ApplicationRight    0x1008FF51   /* switch to application, right*/
#define XF86XK_Book        0x1008FF52   /* Launch bookreader           */
#define XF86XK_CD        0x1008FF53   /* Launch CD/DVD player        */
#define XF86XK_Calculater    0x1008FF54   /* Launch Calculater           */
#define XF86XK_Clear        0x1008FF55   /* Clear window, screen        */
#define XF86XK_Close        0x1008FF56   /* Close window                */
#define XF86XK_Copy        0x1008FF57   /* Copy selection              */
#define XF86XK_Cut        0x1008FF58   /* Cut selection               */
#define XF86XK_Display        0x1008FF59   /* Output switch key           */
#define XF86XK_DOS        0x1008FF5A   /* Launch DOS (emulation)      */
#define XF86XK_Documents    0x1008FF5B   /* Open documents window       */
#define XF86XK_Excel        0x1008FF5C   /* Launch spread sheet         */
#define XF86XK_Explorer        0x1008FF5D   /* Launch file explorer        */
#define XF86XK_Game        0x1008FF5E   /* Launch game                 */
#define XF86XK_Go        0x1008FF5F   /* Go to URL                   */
#define XF86XK_iTouch        0x1008FF60   /* Logitch iTouch- don't use   */
#define XF86XK_LogOff        0x1008FF61   /* Log off system              */
#define XF86XK_Market        0x1008FF62   /* ??                          */
#define XF86XK_Meeting        0x1008FF63   /* enter meeting in calendar   */
#define XF86XK_MenuKB        0x1008FF65   /* distingush keyboard from PB */
#define XF86XK_MenuPB        0x1008FF66   /* distinuish PB from keyboard */
#define XF86XK_MySites        0x1008FF67   /* Favourites                  */
#define XF86XK_New        0x1008FF68   /* New (folder, document...    */
#define XF86XK_News        0x1008FF69   /* News                        */
#define XF86XK_OfficeHome    0x1008FF6A   /* Office home (old Staroffice)*/
#define XF86XK_Open        0x1008FF6B   /* Open                        */
#define XF86XK_Option        0x1008FF6C   /* ?? */
#define XF86XK_Paste        0x1008FF6D   /* Paste                       */
#define XF86XK_Phone        0x1008FF6E   /* Launch phone; dial number   */
#define XF86XK_Q        0x1008FF70   /* Compaq's Q - don't use      */
#define XF86XK_Reply        0x1008FF72   /* Reply e.g., mail            */
#define XF86XK_Reload        0x1008FF73   /* Reload web page, file, etc. */
#define XF86XK_RotateWindows    0x1008FF74   /* Rotate windows e.g. xrandr  */
#define XF86XK_RotationPB    0x1008FF75   /* don't use                   */
#define XF86XK_RotationKB    0x1008FF76   /* don't use                   */
#define XF86XK_Save        0x1008FF77   /* Save (file, document, state */
#define XF86XK_ScrollUp        0x1008FF78   /* Scroll window/contents up   */
#define XF86XK_ScrollDown    0x1008FF79   /* Scrool window/contentd down */
#define XF86XK_ScrollClick    0x1008FF7A   /* Use XKB mousekeys instead   */
#define XF86XK_Send        0x1008FF7B   /* Send mail, file, object     */
#define XF86XK_Spell        0x1008FF7C   /* Spell checker               */
#define XF86XK_SplitScreen    0x1008FF7D   /* Split window or screen      */
#define XF86XK_Support        0x1008FF7E   /* Get support (??)            */
#define XF86XK_TaskPane        0x1008FF7F   /* Show tasks */
#define XF86XK_Terminal        0x1008FF80   /* Launch terminal emulator    */
#define XF86XK_Tools        0x1008FF81   /* toolbox of desktop/app.     */
#define XF86XK_Travel        0x1008FF82   /* ?? */
#define XF86XK_UserPB        0x1008FF84   /* ?? */
#define XF86XK_User1KB        0x1008FF85   /* ?? */
#define XF86XK_User2KB        0x1008FF86   /* ?? */
#define XF86XK_Video        0x1008FF87   /* Launch video player       */
#define XF86XK_WheelButton    0x1008FF88   /* button from a mouse wheel */
#define XF86XK_Word        0x1008FF89   /* Launch word processor     */
#define XF86XK_Xfer        0x1008FF8A
#define XF86XK_ZoomIn        0x1008FF8B   /* zoom in view, map, etc.   */
#define XF86XK_ZoomOut        0x1008FF8C   /* zoom out view, map, etc.  */

#define XF86XK_Away        0x1008FF8D   /* mark yourself as away     */
#define XF86XK_Messenger    0x1008FF8E   /* as in instant messaging   */
#define XF86XK_WebCam        0x1008FF8F   /* Launch web camera app.    */
#define XF86XK_MailForward    0x1008FF90   /* Forward in mail           */
#define XF86XK_Pictures        0x1008FF91   /* Show pictures             */
#define XF86XK_Music        0x1008FF92   /* Launch music application  */

#define XF86XK_Battery        0x1008FF93   /* Display battery information */
#define XF86XK_Bluetooth    0x1008FF94   /* Enable/disable Bluetooth    */
#define XF86XK_WLAN        0x1008FF95   /* Enable/disable WLAN         */
#define XF86XK_UWB        0x1008FF96   /* Enable/disable UWB        */

#define XF86XK_AudioForward    0x1008FF97   /* fast-forward audio track    */
#define XF86XK_AudioRepeat    0x1008FF98   /* toggle repeat mode          */
#define XF86XK_AudioRandomPlay    0x1008FF99   /* toggle shuffle mode         */
#define XF86XK_Subtitle        0x1008FF9A   /* cycle through subtitle      */
#define XF86XK_AudioCycleTrack    0x1008FF9B   /* cycle through audio tracks  */
#define XF86XK_CycleAngle    0x1008FF9C   /* cycle through angles        */
#define XF86XK_FrameBack    0x1008FF9D   /* video: go one frame back    */
#define XF86XK_FrameForward    0x1008FF9E   /* video: go one frame forward */
#define XF86XK_Time        0x1008FF9F   /* display, or shows an entry for time seeking */
#define XF86XK_Select        0x1008FFA0   /* Select button on joypads and remotes */
#define XF86XK_View        0x1008FFA1   /* Show a view options/properties */
#define XF86XK_TopMenu        0x1008FFA2   /* Go to a top-level menu in a video */

#define XF86XK_Red        0x1008FFA3   /* Red button                  */
#define XF86XK_Green        0x1008FFA4   /* Green button                */
#define XF86XK_Yellow        0x1008FFA5   /* Yellow button               */
#define XF86XK_Blue             0x1008FFA6   /* Blue button                 */

#define XF86XK_Suspend        0x1008FFA7   /* Sleep to RAM                */
#define XF86XK_Hibernate    0x1008FFA8   /* Sleep to disk               */
#define XF86XK_TouchpadToggle    0x1008FFA9   /* Toggle between touchpad/trackstick */
#define XF86XK_TouchpadOn    0x1008FFB0   /* The touchpad got switched on */
#define XF86XK_TouchpadOff    0x1008FFB1   /* The touchpad got switched off */

/* Keys for special action keys (hot keys) */
/* Virtual terminals on some operating systems */
#define XF86XK_Switch_VT_1    0x1008FE01
#define XF86XK_Switch_VT_2    0x1008FE02
#define XF86XK_Switch_VT_3    0x1008FE03
#define XF86XK_Switch_VT_4    0x1008FE04
#define XF86XK_Switch_VT_5    0x1008FE05
#define XF86XK_Switch_VT_6    0x1008FE06
#define XF86XK_Switch_VT_7    0x1008FE07
#define XF86XK_Switch_VT_8    0x1008FE08
#define XF86XK_Switch_VT_9    0x1008FE09
#define XF86XK_Switch_VT_10    0x1008FE0A
#define XF86XK_Switch_VT_11    0x1008FE0B
#define XF86XK_Switch_VT_12    0x1008FE0C

#define XF86XK_Ungrab        0x1008FE20   /* force ungrab               */
#define XF86XK_ClearGrab    0x1008FE21   /* kill application with grab */
#define XF86XK_Next_VMode    0x1008FE22   /* next video mode available  */
#define XF86XK_Prev_VMode    0x1008FE23   /* prev. video mode available */
#define XF86XK_LogWindowTree    0x1008FE24   /* print window tree to log   */
#define XF86XK_LogGrabInfo    0x1008FE25   /* print all active grabs to log */

Pytanie teraz jak to edytować? bo mam cody klawiszy z pliku lirc. conf  one są inne:

Kod:

POWER                    0X0000000000000080
          TV                       0X00000000000000D6
          FM                       0X00000000000000D7
          DVD                      0X00000000000000D8
          RED                      0X00000000000000CB
          GREEN                    0X00000000000000CC
          YELLOW                   0X00000000000000CD
          BLUE                     0X00000000000000CE
          TELETEXT                 0X000000000000009F
          SLEEP                    0X00000000000000C0
          MUTE                     0X0000000000000094
          BOSS_KEY                 0X00000000000000C9
          CH_UP                    0X000000000000008C
          CH_DOWN                  0X0000000000000090
          VOL_DOWN                 0X0000000000000088
          VOL_UP                   0X0000000000000084
          ENTER                    0X0000000000000093
          CC                       0X00000000000000D0
          FULLSCREEN               0X0000000000000083
          MENU                     0X00000000000000CF
          SCAN                     0X00000000000000D1
          REPLAY                   0X00000000000000C2
          PLAY                     0X00000000000000C3
          SKIP                     0X00000000000000C4
          OSD                      0X00000000000000D2
          BACK                     0X00000000000000D4
          STOP                     0X00000000000000C6
          FORWARD                  0X00000000000000D5
          LANGUAGE                 0X00000000000000D3
          1                        0X0000000000000085
          2                        0X0000000000000086
          3                        0X0000000000000087
          4                        0X0000000000000089
          5                        0X000000000000008A
          6                        0X000000000000008B
          7                        0X000000000000008D
          8                        0X000000000000008E
          9                        0X000000000000008F
          0                        0X0000000000000092
          .                        0X00000000000000C1
          RECALL                   0X0000000000000061
          VIDEO                    0X000000000000009E
          AUDIO                    0X000000000000009B
          DISPLAY                  0X0000000000000096
          SNAPSHOT                 0X00000000000000C8
          PIP                      0X00000000000000CA
          RECSTOP                  0X00000000000000C6
          REC                      0X00000000000000C7
          TIMESHIFT                0X00000000000000C5

Nie wiem jak przy pomocy tego programu Xmodmap dopisać konfigurację pozostałych klawiszy. Xev wykrywa mi tylko te klawisze na pilocie o których już mówiłem a co z resztą?

Ostatnio edytowany przez vnu007dl (2012-09-24 23:32:09)

Offline

 

#9  2012-09-26 00:55:03

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Jeśli xev nie reaguje w ogóle (może też wypisywać "NoSymbol" - wtedy patrz niżej) na część klawiszy, to sprawa jest jeszcze bardziej zagmatwana. Ostrzegałem :) Dość ładnie jest to wytłumaczone na [url=https://wiki.archlinux.org/index.php/Map_scancodes_to_keycodes]wiki Archa[/url].

Jeśli xev reaguje, to wystarczy przypisać poszczególnym kodom klawiszy jakieś znaczenie. Trzeba utworzyć plik

Kod:

~/.Xmodmap

o przykładowej treści

Kod:

keycode 136 = XF86AudioStop
keycode 169 = XF86AudioPrev

itp, gdzie numer kodu odczytujemy z xev, wciskając dany przycisk na pilocie, a przypisywaną wartość wybieramy np. z pliku o którym pisaliśmy wcześniej.


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#10  2012-10-08 18:53:38

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

hmm tylko, że jest taki problem, że to nie działa.
Wpisuję kody klawiszy. Dla przykładu chciałem klawisze chanell up i down ich kody u mnie to 402 i 403, ale nie było takich opisów więc dałem  page  up i down, ale to chyba nieistotne. W każdym bądź razem wygląda to u mnie tak:

Kod:

keycode 402 = XF86XK_ScrollUp
keycode 403 = XF86XK_ScrollDown

Odpalam xev ... i brak jakiejkolwiek reakcji, Jakakolwiek aplikacja też nie reaguje przy próbie przechwycenia tego skrótu dla przycisku.
Kody przycisków wziąłem z aplikacji showkey, tutaj właśnie dla omawianych przycisków chanell up i down:

Kod:

root@darek-PC:/home/darek# showkey -k
tryb kb był RAW
[ jeśli to jest wykonywane pod X, może nie działać
ponieważ X serwer także czyta /dev/console ]

proszę nacisnąć dowolny klawisz (program zakończy się 10s po ostatnim)...
kod klawisza  28 puszczenie
kod klawisza 402 naciśnięcie
kod klawisza 402 puszczenie
kod klawisza 403 naciśnięcie
kod klawisza 403 puszczenie

Offline

 

#11  2012-10-09 17:25:00

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Skoro xev nie reaguje, to - jak wspomniałem - sprawa się gmatwa jeszcze bardziej. X11 obsługuje tylko keycody<256, dlatego należy posłużyć się scancodami (czyli wartościami zwracanymi przez jądro) i przetłumaczyć je na keycody widoczne dla X11. Link podałem wcześniej - u siebie konfigurowałem to starszą, drugą z podanych metod - setkeycodes.


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#12  2012-10-09 21:45:42

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

ufa, robi się ciekawie. Rozumiem, że ten link o którym kolega wspominał to ten wiki archa tak?
Zgodnie więc z tym, jako, że wiem, że mój pilot ma event13 to:

Kod:

root@darek-PC:/home/darek# /lib/udev/keymap -i input/event13
Press ESC to finish, or Control-C if this device is not your primary keyboard
scan code: 0x00   key code: power2
scan code: 0x36   key code: tv
scan code: 0x22   key code: previous
scan code: 0x23   key code: playpause
scan code: 0x24   key code: next
scan code: 0x25   key code: time
scan code: 0x34   key code: rewind
scan code: 0x26   key code: stop
scan code: 0x35   key code: fastforward
scan code: 0x27   key code: record
scan code: 0x05   key code: 1
scan code: 0x06   key code: 2
scan code: 0x07   key code: 3
scan code: 0x33   key code: language
scan code: 0x09   key code: 4
scan code: 0x0A   key code: 5
scan code: 0x0B   key code: 6
scan code: 0x03   key code: zoom
scan code: 0x0D   key code: 7
scan code: 0x0E   key code: 8
scan code: 0x0F   key code: 9
scan code: 0x11   key code: last
scan code: 0x21   key code: dot
scan code: 0x12   key code: 0
scan code: 0x16   key code: info
scan code: 0x28   key code: camera
scan code: 0x2F   key code: menu
scan code: 0x30   key code: cancel
scan code: 0x08   key code: left
scan code: 0x13   key code: enter
scan code: 0x04   key code: right
scan code: 0x14   key code: mute
scan code: 0x10   key code: down
scan code: 0x3E   key code: volumeup
scan code: 0x3A   key code: volumedown
scan code: 0x1B   key code: audio
scan code: 0x1E   key code: video
scan code: 0x3B   key code: channelup
scan code: 0x3F   key code: channeldown
scan code: 0x2B   key code: red
scan code: 0x2C   key code: green
scan code: 0x2D   key code: yellow
scan code: 0x2E   key code: blue
scan code: 0x1F   key code: text
scan code: 0x31   key code: channel
scan code: 0x2A   key code: tv2
scan code: 0x29   key code: clear
^[^[
^[^[^[^[^[

Nie mogę jednak tego zamknąć, naciskam esc i wyskakują mi powyższe chaszcze.
nast komenda zwraca coś takiego:

Kod:

darek@darek-PC:~$ /lib/udev/findkeyboards
USB keyboard: input/event14
USB keyboard: input/event2

Co dalej mógłbym prosić kolegę jeszcze o pomoc bo trochę ten rekst dalej jest dla mnie grząski i nie bardzo rozumiem co mam dalej zrobić?
Rozumiem, że na podstawie powyżej otrzymanych kodów muszę edytować plik: /usr/include/linux/input.h
U mnie on wygląda tak:

Kod:

#ifndef _INPUT_H
#define _INPUT_H

/*
 * Copyright (c) 1999-2002 Vojtech Pavlik
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published by
 * the Free Software Foundation.
 */

#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <linux/types.h>

/*
 * The event structure itself
 */

struct input_event {
    struct timeval time;
    __u16 type;
    __u16 code;
    __s32 value;
};

/*
 * Protocol version.
 */

#define EV_VERSION        0x010001

/*
 * IOCTLs (0x00 - 0x7f)
 */

struct input_id {
    __u16 bustype;
    __u16 vendor;
    __u16 product;
    __u16 version;
};

/**
 * struct input_absinfo - used by EVIOCGABS/EVIOCSABS ioctls
 * @value: latest reported value for the axis.
 * @minimum: specifies minimum value for the axis.
 * @maximum: specifies maximum value for the axis.
 * @fuzz: specifies fuzz value that is used to filter noise from
 *    the event stream.
 * @flat: values that are within this value will be discarded by
 *    joydev interface and reported as 0 instead.
 * @resolution: specifies resolution for the values reported for
 *    the axis.
 *
 * Note that input core does not clamp reported values to the
 * [minimum, maximum] limits, such task is left to userspace.
 *
 * Resolution for main axes (ABS_X, ABS_Y, ABS_Z) is reported in
 * units per millimeter (units/mm), resolution for rotational axes
 * (ABS_RX, ABS_RY, ABS_RZ) is reported in units per radian.
 */
struct input_absinfo {
    __s32 value;
    __s32 minimum;
    __s32 maximum;
    __s32 fuzz;
    __s32 flat;
    __s32 resolution;
};

/**
 * struct input_keymap_entry - used by EVIOCGKEYCODE/EVIOCSKEYCODE ioctls
 * @scancode: scancode represented in machine-endian form.
 * @len: length of the scancode that resides in @scancode buffer.
 * @index: index in the keymap, may be used instead of scancode
 * @flags: allows to specify how kernel should handle the request. For
 *    example, setting INPUT_KEYMAP_BY_INDEX flag indicates that kernel
 *    should perform lookup in keymap by @index instead of @scancode
 * @keycode: key code assigned to this scancode
 *
 * The structure is used to retrieve and modify keymap data. Users have
 * option of performing lookup either by @scancode itself or by @index
 * in keymap entry. EVIOCGKEYCODE will also return scancode or index
 * (depending on which element was used to perform lookup).
 */
struct input_keymap_entry {
#define INPUT_KEYMAP_BY_INDEX    (1 << 0)
    __u8  flags;
    __u8  len;
    __u16 index;
    __u32 keycode;
    __u8  scancode[32];
};

#define EVIOCGVERSION        _IOR('E', 0x01, int)            /* get driver version */
#define EVIOCGID        _IOR('E', 0x02, struct input_id)    /* get device ID */
#define EVIOCGREP        _IOR('E', 0x03, unsigned int[2])    /* get repeat settings */
#define EVIOCSREP        _IOW('E', 0x03, unsigned int[2])    /* set repeat settings */

#define EVIOCGKEYCODE        _IOR('E', 0x04, unsigned int[2])        /* get keycode */
#define EVIOCGKEYCODE_V2    _IOR('E', 0x04, struct input_keymap_entry)
#define EVIOCSKEYCODE        _IOW('E', 0x04, unsigned int[2])        /* set keycode */
#define EVIOCSKEYCODE_V2    _IOW('E', 0x04, struct input_keymap_entry)

#define EVIOCGNAME(len)        _IOC(_IOC_READ, 'E', 0x06, len)        /* get device name */
#define EVIOCGPHYS(len)        _IOC(_IOC_READ, 'E', 0x07, len)        /* get physical location */
#define EVIOCGUNIQ(len)        _IOC(_IOC_READ, 'E', 0x08, len)        /* get unique identifier */
#define EVIOCGPROP(len)        _IOC(_IOC_READ, 'E', 0x09, len)        /* get device properties */

#define EVIOCGKEY(len)        _IOC(_IOC_READ, 'E', 0x18, len)        /* get global key state */
#define EVIOCGLED(len)        _IOC(_IOC_READ, 'E', 0x19, len)        /* get all LEDs */
#define EVIOCGSND(len)        _IOC(_IOC_READ, 'E', 0x1a, len)        /* get all sounds status */
#define EVIOCGSW(len)        _IOC(_IOC_READ, 'E', 0x1b, len)        /* get all switch states */

#define EVIOCGBIT(ev,len)    _IOC(_IOC_READ, 'E', 0x20 + (ev), len)    /* get event bits */
#define EVIOCGABS(abs)        _IOR('E', 0x40 + (abs), struct input_absinfo)    /* get abs value/limits */
#define EVIOCSABS(abs)        _IOW('E', 0xc0 + (abs), struct input_absinfo)    /* set abs value/limits */

#define EVIOCSFF        _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect))    /* send a force effect to a force feedback device */
#define EVIOCRMFF        _IOW('E', 0x81, int)            /* Erase a force effect */
#define EVIOCGEFFECTS        _IOR('E', 0x84, int)            /* Report number of effects playable at the same time */

#define EVIOCGRAB        _IOW('E', 0x90, int)            /* Grab/Release device */

/*
 * Device properties and quirks
 */

#define INPUT_PROP_POINTER        0x00    /* needs a pointer */
#define INPUT_PROP_DIRECT        0x01    /* direct input devices */
#define INPUT_PROP_BUTTONPAD        0x02    /* has button(s) under pad */
#define INPUT_PROP_SEMI_MT        0x03    /* touch rectangle only */

#define INPUT_PROP_MAX            0x1f
#define INPUT_PROP_CNT            (INPUT_PROP_MAX + 1)

/*
 * Event types
 */

#define EV_SYN            0x00
#define EV_KEY            0x01
#define EV_REL            0x02
#define EV_ABS            0x03
#define EV_MSC            0x04
#define EV_SW            0x05
#define EV_LED            0x11
#define EV_SND            0x12
#define EV_REP            0x14
#define EV_FF            0x15
#define EV_PWR            0x16
#define EV_FF_STATUS        0x17
#define EV_MAX            0x1f
#define EV_CNT            (EV_MAX+1)

/*
 * Synchronization events.
 */

#define SYN_REPORT        0
#define SYN_CONFIG        1
#define SYN_MT_REPORT        2
#define SYN_DROPPED        3

/*
 * Keys and buttons
 *
 * Most of the keys/buttons are modeled after USB HUT 1.12
 * (see http://www.usb.org/developers/hidpage).
 * Abbreviations in the comments:
 * AC - Application Control
 * AL - Application Launch Button
 * SC - System Control
 */

#define KEY_RESERVED        0
#define KEY_ESC            1
#define KEY_1            2
#define KEY_2            3
#define KEY_3            4
#define KEY_4            5
#define KEY_5            6
#define KEY_6            7
#define KEY_7            8
#define KEY_8            9
#define KEY_9            10
#define KEY_0            11
#define KEY_MINUS        12
#define KEY_EQUAL        13
#define KEY_BACKSPACE        14
#define KEY_TAB            15
#define KEY_Q            16
#define KEY_W            17
#define KEY_E            18
#define KEY_R            19
#define KEY_T            20
#define KEY_Y            21
#define KEY_U            22
#define KEY_I            23
#define KEY_O            24
#define KEY_P            25
#define KEY_LEFTBRACE        26
#define KEY_RIGHTBRACE        27
#define KEY_ENTER        28
#define KEY_LEFTCTRL        29
#define KEY_A            30
#define KEY_S            31
#define KEY_D            32
#define KEY_F            33
#define KEY_G            34
#define KEY_H            35
#define KEY_J            36
#define KEY_K            37
#define KEY_L            38
#define KEY_SEMICOLON        39
#define KEY_APOSTROPHE        40
#define KEY_GRAVE        41
#define KEY_LEFTSHIFT        42
#define KEY_BACKSLASH        43
#define KEY_Z            44
#define KEY_X            45
#define KEY_C            46
#define KEY_V            47
#define KEY_B            48
#define KEY_N            49
#define KEY_M            50
#define KEY_COMMA        51
#define KEY_DOT            52
#define KEY_SLASH        53
#define KEY_RIGHTSHIFT        54
#define KEY_KPASTERISK        55
#define KEY_LEFTALT        56
#define KEY_SPACE        57
#define KEY_CAPSLOCK        58
#define KEY_F1            59
#define KEY_F2            60
#define KEY_F3            61
#define KEY_F4            62
#define KEY_F5            63
#define KEY_F6            64
#define KEY_F7            65
#define KEY_F8            66
#define KEY_F9            67
#define KEY_F10            68
#define KEY_NUMLOCK        69
#define KEY_SCROLLLOCK        70
#define KEY_KP7            71
#define KEY_KP8            72
#define KEY_KP9            73
#define KEY_KPMINUS        74
#define KEY_KP4            75
#define KEY_KP5            76
#define KEY_KP6            77
#define KEY_KPPLUS        78
#define KEY_KP1            79
#define KEY_KP2            80
#define KEY_KP3            81
#define KEY_KP0            82
#define KEY_KPDOT        83

#define KEY_ZENKAKUHANKAKU    85
#define KEY_102ND        86
#define KEY_F11            87
#define KEY_F12            88
#define KEY_RO            89
#define KEY_KATAKANA        90
#define KEY_HIRAGANA        91
#define KEY_HENKAN        92
#define KEY_KATAKANAHIRAGANA    93
#define KEY_MUHENKAN        94
#define KEY_KPJPCOMMA        95
#define KEY_KPENTER        96
#define KEY_RIGHTCTRL        97
#define KEY_KPSLASH        98
#define KEY_SYSRQ        99
#define KEY_RIGHTALT        100
#define KEY_LINEFEED        101
#define KEY_HOME        102
#define KEY_UP            103
#define KEY_PAGEUP        104
#define KEY_LEFT        105
#define KEY_RIGHT        106
#define KEY_END            107
#define KEY_DOWN        108
#define KEY_PAGEDOWN        109
#define KEY_INSERT        110
#define KEY_DELETE        111
#define KEY_MACRO        112
#define KEY_MUTE        113
#define KEY_VOLUMEDOWN        114
#define KEY_VOLUMEUP        115
#define KEY_POWER        116    /* SC System Power Down */
#define KEY_KPEQUAL        117
#define KEY_KPPLUSMINUS        118
#define KEY_PAUSE        119
#define KEY_SCALE        120    /* AL Compiz Scale (Expose) */

#define KEY_KPCOMMA        121
#define KEY_HANGEUL        122
#define KEY_HANGUEL        KEY_HANGEUL
#define KEY_HANJA        123
#define KEY_YEN            124
#define KEY_LEFTMETA        125
#define KEY_RIGHTMETA        126
#define KEY_COMPOSE        127

#define KEY_STOP        128    /* AC Stop */
#define KEY_AGAIN        129
#define KEY_PROPS        130    /* AC Properties */
#define KEY_UNDO        131    /* AC Undo */
#define KEY_FRONT        132
#define KEY_COPY        133    /* AC Copy */
#define KEY_OPEN        134    /* AC Open */
#define KEY_PASTE        135    /* AC Paste */
#define KEY_FIND        136    /* AC Search */
#define KEY_CUT            137    /* AC Cut */
#define KEY_HELP        138    /* AL Integrated Help Center */
#define KEY_MENU        139    /* Menu (show menu) */
#define KEY_CALC        140    /* AL Calculator */
#define KEY_SETUP        141
#define KEY_SLEEP        142    /* SC System Sleep */
#define KEY_WAKEUP        143    /* System Wake Up */
#define KEY_FILE        144    /* AL Local Machine Browser */
#define KEY_SENDFILE        145
#define KEY_DELETEFILE        146
#define KEY_XFER        147
#define KEY_PROG1        148
#define KEY_PROG2        149
#define KEY_WWW            150    /* AL Internet Browser */
#define KEY_MSDOS        151
#define KEY_COFFEE        152    /* AL Terminal Lock/Screensaver */
#define KEY_SCREENLOCK        KEY_COFFEE
#define KEY_DIRECTION        153
#define KEY_CYCLEWINDOWS    154
#define KEY_MAIL        155
#define KEY_BOOKMARKS        156    /* AC Bookmarks */
#define KEY_COMPUTER        157
#define KEY_BACK        158    /* AC Back */
#define KEY_FORWARD        159    /* AC Forward */
#define KEY_CLOSECD        160
#define KEY_EJECTCD        161
#define KEY_EJECTCLOSECD    162
#define KEY_NEXTSONG        163
#define KEY_PLAYPAUSE        164
#define KEY_PREVIOUSSONG    165
#define KEY_STOPCD        166
#define KEY_RECORD        167
#define KEY_REWIND        168
#define KEY_PHONE        169    /* Media Select Telephone */
#define KEY_ISO            170
#define KEY_CONFIG        171    /* AL Consumer Control Configuration */
#define KEY_HOMEPAGE        172    /* AC Home */
#define KEY_REFRESH        173    /* AC Refresh */
#define KEY_EXIT        174    /* AC Exit */
#define KEY_MOVE        175
#define KEY_EDIT        176
#define KEY_SCROLLUP        177
#define KEY_SCROLLDOWN        178
#define KEY_KPLEFTPAREN        179
#define KEY_KPRIGHTPAREN    180
#define KEY_NEW            181    /* AC New */
#define KEY_REDO        182    /* AC Redo/Repeat */

#define KEY_F13            183
#define KEY_F14            184
#define KEY_F15            185
#define KEY_F16            186
#define KEY_F17            187
#define KEY_F18            188
#define KEY_F19            189
#define KEY_F20            190
#define KEY_F21            191
#define KEY_F22            192
#define KEY_F23            193
#define KEY_F24            194

#define KEY_PLAYCD        200
#define KEY_PAUSECD        201
#define KEY_PROG3        202
#define KEY_PROG4        203
#define KEY_DASHBOARD        204    /* AL Dashboard */
#define KEY_SUSPEND        205
#define KEY_CLOSE        206    /* AC Close */
#define KEY_PLAY        207
#define KEY_FASTFORWARD        208
#define KEY_BASSBOOST        209
#define KEY_PRINT        210    /* AC Print */
#define KEY_HP            211
#define KEY_CAMERA        212
#define KEY_SOUND        213
#define KEY_QUESTION        214
#define KEY_EMAIL        215
#define KEY_CHAT        216
#define KEY_SEARCH        217
#define KEY_CONNECT        218
#define KEY_FINANCE        219    /* AL Checkbook/Finance */
#define KEY_SPORT        220
#define KEY_SHOP        221
#define KEY_ALTERASE        222
#define KEY_CANCEL        223    /* AC Cancel */
#define KEY_BRIGHTNESSDOWN    224
#define KEY_BRIGHTNESSUP    225
#define KEY_MEDIA        226

#define KEY_SWITCHVIDEOMODE    227    /* Cycle between available video
                       outputs (Monitor/LCD/TV-out/etc) */
#define KEY_KBDILLUMTOGGLE    228
#define KEY_KBDILLUMDOWN    229
#define KEY_KBDILLUMUP        230

#define KEY_SEND        231    /* AC Send */
#define KEY_REPLY        232    /* AC Reply */
#define KEY_FORWARDMAIL        233    /* AC Forward Msg */
#define KEY_SAVE        234    /* AC Save */
#define KEY_DOCUMENTS        235

#define KEY_BATTERY        236

#define KEY_BLUETOOTH        237
#define KEY_WLAN        238
#define KEY_UWB            239

#define KEY_UNKNOWN        240

#define KEY_VIDEO_NEXT        241    /* drive next video source */
#define KEY_VIDEO_PREV        242    /* drive previous video source */
#define KEY_BRIGHTNESS_CYCLE    243    /* brightness up, after max is min */
#define KEY_BRIGHTNESS_ZERO    244    /* brightness off, use ambient */
#define KEY_DISPLAY_OFF        245    /* display device to off state */

#define KEY_WIMAX        246
#define KEY_RFKILL        247    /* Key that controls all radios */

#define KEY_MICMUTE        248    /* Mute / unmute the microphone */

/* Code 255 is reserved for special needs of AT keyboard driver */

#define BTN_MISC        0x100
#define BTN_0            0x100
#define BTN_1            0x101
#define BTN_2            0x102
#define BTN_3            0x103
#define BTN_4            0x104
#define BTN_5            0x105
#define BTN_6            0x106
#define BTN_7            0x107
#define BTN_8            0x108
#define BTN_9            0x109

#define BTN_MOUSE        0x110
#define BTN_LEFT        0x110
#define BTN_RIGHT        0x111
#define BTN_MIDDLE        0x112
#define BTN_SIDE        0x113
#define BTN_EXTRA        0x114
#define BTN_FORWARD        0x115
#define BTN_BACK        0x116
#define BTN_TASK        0x117

#define BTN_JOYSTICK        0x120
#define BTN_TRIGGER        0x120
#define BTN_THUMB        0x121
#define BTN_THUMB2        0x122
#define BTN_TOP            0x123
#define BTN_TOP2        0x124
#define BTN_PINKIE        0x125
#define BTN_BASE        0x126
#define BTN_BASE2        0x127
#define BTN_BASE3        0x128
#define BTN_BASE4        0x129
#define BTN_BASE5        0x12a
#define BTN_BASE6        0x12b
#define BTN_DEAD        0x12f

#define BTN_GAMEPAD        0x130
#define BTN_A            0x130
#define BTN_B            0x131
#define BTN_C            0x132
#define BTN_X            0x133
#define BTN_Y            0x134
#define BTN_Z            0x135
#define BTN_TL            0x136
#define BTN_TR            0x137
#define BTN_TL2            0x138
#define BTN_TR2            0x139
#define BTN_SELECT        0x13a
#define BTN_START        0x13b
#define BTN_MODE        0x13c
#define BTN_THUMBL        0x13d
#define BTN_THUMBR        0x13e

#define BTN_DIGI        0x140
#define BTN_TOOL_PEN        0x140
#define BTN_TOOL_RUBBER        0x141
#define BTN_TOOL_BRUSH        0x142
#define BTN_TOOL_PENCIL        0x143
#define BTN_TOOL_AIRBRUSH    0x144
#define BTN_TOOL_FINGER        0x145
#define BTN_TOOL_MOUSE        0x146
#define BTN_TOOL_LENS        0x147
#define BTN_TOOL_QUINTTAP    0x148    /* Five fingers on trackpad */
#define BTN_TOUCH        0x14a
#define BTN_STYLUS        0x14b
#define BTN_STYLUS2        0x14c
#define BTN_TOOL_DOUBLETAP    0x14d
#define BTN_TOOL_TRIPLETAP    0x14e
#define BTN_TOOL_QUADTAP    0x14f    /* Four fingers on trackpad */

#define BTN_WHEEL        0x150
#define BTN_GEAR_DOWN        0x150
#define BTN_GEAR_UP        0x151

#define KEY_OK            0x160
#define KEY_SELECT        0x161
#define KEY_GOTO        0x162
#define KEY_CLEAR        0x163
#define KEY_POWER2        0x164
#define KEY_OPTION        0x165
#define KEY_INFO        0x166    /* AL OEM Features/Tips/Tutorial */
#define KEY_TIME        0x167
#define KEY_VENDOR        0x168
#define KEY_ARCHIVE        0x169
#define KEY_PROGRAM        0x16a    /* Media Select Program Guide */
#define KEY_CHANNEL        0x16b
#define KEY_FAVORITES        0x16c
#define KEY_EPG            0x16d
#define KEY_PVR            0x16e    /* Media Select Home */
#define KEY_MHP            0x16f
#define KEY_LANGUAGE        0x170
#define KEY_TITLE        0x171
#define KEY_SUBTITLE        0x172
#define KEY_ANGLE        0x173
#define KEY_ZOOM        0x174
#define KEY_MODE        0x175
#define KEY_KEYBOARD        0x176
#define KEY_SCREEN        0x177
#define KEY_PC            0x178    /* Media Select Computer */
#define KEY_TV            0x179    /* Media Select TV */
#define KEY_TV2            0x17a    /* Media Select Cable */
#define KEY_VCR            0x17b    /* Media Select VCR */
#define KEY_VCR2        0x17c    /* VCR Plus */
#define KEY_SAT            0x17d    /* Media Select Satellite */
#define KEY_SAT2        0x17e
#define KEY_CD            0x17f    /* Media Select CD */
#define KEY_TAPE        0x180    /* Media Select Tape */
#define KEY_RADIO        0x181
#define KEY_TUNER        0x182    /* Media Select Tuner */
#define KEY_PLAYER        0x183
#define KEY_TEXT        0x184
#define KEY_DVD            0x185    /* Media Select DVD */
#define KEY_AUX            0x186
#define KEY_MP3            0x187
#define KEY_AUDIO        0x188    /* AL Audio Browser */
#define KEY_VIDEO        0x189    /* AL Movie Browser */
#define KEY_DIRECTORY        0x18a
#define KEY_LIST        0x18b
#define KEY_MEMO        0x18c    /* Media Select Messages */
#define KEY_CALENDAR        0x18d
#define KEY_RED            0x18e
#define KEY_GREEN        0x18f
#define KEY_YELLOW        0x190
#define KEY_BLUE        0x191
#define KEY_CHANNELUP        0x192    /* Channel Increment */
#define KEY_CHANNELDOWN        0x193    /* Channel Decrement */
#define KEY_FIRST        0x194
#define KEY_LAST        0x195    /* Recall Last */
#define KEY_AB            0x196
#define KEY_NEXT        0x197
#define KEY_RESTART        0x198
#define KEY_SLOW        0x199
#define KEY_SHUFFLE        0x19a
#define KEY_BREAK        0x19b
#define KEY_PREVIOUS        0x19c
#define KEY_DIGITS        0x19d
#define KEY_TEEN        0x19e
#define KEY_TWEN        0x19f
#define KEY_VIDEOPHONE        0x1a0    /* Media Select Video Phone */
#define KEY_GAMES        0x1a1    /* Media Select Games */
#define KEY_ZOOMIN        0x1a2    /* AC Zoom In */
#define KEY_ZOOMOUT        0x1a3    /* AC Zoom Out */
#define KEY_ZOOMRESET        0x1a4    /* AC Zoom */
#define KEY_WORDPROCESSOR    0x1a5    /* AL Word Processor */
#define KEY_EDITOR        0x1a6    /* AL Text Editor */
#define KEY_SPREADSHEET        0x1a7    /* AL Spreadsheet */
#define KEY_GRAPHICSEDITOR    0x1a8    /* AL Graphics Editor */
#define KEY_PRESENTATION    0x1a9    /* AL Presentation App */
#define KEY_DATABASE        0x1aa    /* AL Database App */
#define KEY_NEWS        0x1ab    /* AL Newsreader */
#define KEY_VOICEMAIL        0x1ac    /* AL Voicemail */
#define KEY_ADDRESSBOOK        0x1ad    /* AL Contacts/Address Book */
#define KEY_MESSENGER        0x1ae    /* AL Instant Messaging */
#define KEY_DISPLAYTOGGLE    0x1af    /* Turn display (LCD) on and off */
#define KEY_SPELLCHECK        0x1b0   /* AL Spell Check */
#define KEY_LOGOFF        0x1b1   /* AL Logoff */

#define KEY_DOLLAR        0x1b2
#define KEY_EURO        0x1b3

#define KEY_FRAMEBACK        0x1b4    /* Consumer - transport controls */
#define KEY_FRAMEFORWARD    0x1b5
#define KEY_CONTEXT_MENU    0x1b6    /* GenDesc - system context menu */
#define KEY_MEDIA_REPEAT    0x1b7    /* Consumer - transport control */
#define KEY_10CHANNELSUP    0x1b8    /* 10 channels up (10+) */
#define KEY_10CHANNELSDOWN    0x1b9    /* 10 channels down (10-) */
#define KEY_IMAGES        0x1ba    /* AL Image Browser */

#define KEY_DEL_EOL        0x1c0
#define KEY_DEL_EOS        0x1c1
#define KEY_INS_LINE        0x1c2
#define KEY_DEL_LINE        0x1c3

#define KEY_FN            0x1d0
#define KEY_FN_ESC        0x1d1
#define KEY_FN_F1        0x1d2
#define KEY_FN_F2        0x1d3
#define KEY_FN_F3        0x1d4
#define KEY_FN_F4        0x1d5
#define KEY_FN_F5        0x1d6
#define KEY_FN_F6        0x1d7
#define KEY_FN_F7        0x1d8
#define KEY_FN_F8        0x1d9
#define KEY_FN_F9        0x1da
#define KEY_FN_F10        0x1db
#define KEY_FN_F11        0x1dc
#define KEY_FN_F12        0x1dd
#define KEY_FN_1        0x1de
#define KEY_FN_2        0x1df
#define KEY_FN_D        0x1e0
#define KEY_FN_E        0x1e1
#define KEY_FN_F        0x1e2
#define KEY_FN_S        0x1e3
#define KEY_FN_B        0x1e4

#define KEY_BRL_DOT1        0x1f1
#define KEY_BRL_DOT2        0x1f2
#define KEY_BRL_DOT3        0x1f3
#define KEY_BRL_DOT4        0x1f4
#define KEY_BRL_DOT5        0x1f5
#define KEY_BRL_DOT6        0x1f6
#define KEY_BRL_DOT7        0x1f7
#define KEY_BRL_DOT8        0x1f8
#define KEY_BRL_DOT9        0x1f9
#define KEY_BRL_DOT10        0x1fa

#define KEY_NUMERIC_0        0x200    /* used by phones, remote controls, */
#define KEY_NUMERIC_1        0x201    /* and other keypads */
#define KEY_NUMERIC_2        0x202
#define KEY_NUMERIC_3        0x203
#define KEY_NUMERIC_4        0x204
#define KEY_NUMERIC_5        0x205
#define KEY_NUMERIC_6        0x206
#define KEY_NUMERIC_7        0x207
#define KEY_NUMERIC_8        0x208
#define KEY_NUMERIC_9        0x209
#define KEY_NUMERIC_STAR    0x20a
#define KEY_NUMERIC_POUND    0x20b

#define KEY_CAMERA_FOCUS    0x210
#define KEY_WPS_BUTTON        0x211    /* WiFi Protected Setup key */

#define KEY_TOUCHPAD_TOGGLE    0x212    /* Request switch touchpad on or off */
#define KEY_TOUCHPAD_ON        0x213
#define KEY_TOUCHPAD_OFF    0x214

#define KEY_CAMERA_ZOOMIN    0x215
#define KEY_CAMERA_ZOOMOUT    0x216
#define KEY_CAMERA_UP        0x217
#define KEY_CAMERA_DOWN        0x218
#define KEY_CAMERA_LEFT        0x219
#define KEY_CAMERA_RIGHT    0x21a

#define BTN_TRIGGER_HAPPY        0x2c0
#define BTN_TRIGGER_HAPPY1        0x2c0
#define BTN_TRIGGER_HAPPY2        0x2c1
#define BTN_TRIGGER_HAPPY3        0x2c2
#define BTN_TRIGGER_HAPPY4        0x2c3
#define BTN_TRIGGER_HAPPY5        0x2c4
#define BTN_TRIGGER_HAPPY6        0x2c5
#define BTN_TRIGGER_HAPPY7        0x2c6
#define BTN_TRIGGER_HAPPY8        0x2c7
#define BTN_TRIGGER_HAPPY9        0x2c8
#define BTN_TRIGGER_HAPPY10        0x2c9
#define BTN_TRIGGER_HAPPY11        0x2ca
#define BTN_TRIGGER_HAPPY12        0x2cb
#define BTN_TRIGGER_HAPPY13        0x2cc
#define BTN_TRIGGER_HAPPY14        0x2cd
#define BTN_TRIGGER_HAPPY15        0x2ce
#define BTN_TRIGGER_HAPPY16        0x2cf
#define BTN_TRIGGER_HAPPY17        0x2d0
#define BTN_TRIGGER_HAPPY18        0x2d1
#define BTN_TRIGGER_HAPPY19        0x2d2
#define BTN_TRIGGER_HAPPY20        0x2d3
#define BTN_TRIGGER_HAPPY21        0x2d4
#define BTN_TRIGGER_HAPPY22        0x2d5
#define BTN_TRIGGER_HAPPY23        0x2d6
#define BTN_TRIGGER_HAPPY24        0x2d7
#define BTN_TRIGGER_HAPPY25        0x2d8
#define BTN_TRIGGER_HAPPY26        0x2d9
#define BTN_TRIGGER_HAPPY27        0x2da
#define BTN_TRIGGER_HAPPY28        0x2db
#define BTN_TRIGGER_HAPPY29        0x2dc
#define BTN_TRIGGER_HAPPY30        0x2dd
#define BTN_TRIGGER_HAPPY31        0x2de
#define BTN_TRIGGER_HAPPY32        0x2df
#define BTN_TRIGGER_HAPPY33        0x2e0
#define BTN_TRIGGER_HAPPY34        0x2e1
#define BTN_TRIGGER_HAPPY35        0x2e2
#define BTN_TRIGGER_HAPPY36        0x2e3
#define BTN_TRIGGER_HAPPY37        0x2e4
#define BTN_TRIGGER_HAPPY38        0x2e5
#define BTN_TRIGGER_HAPPY39        0x2e6
#define BTN_TRIGGER_HAPPY40        0x2e7

/* We avoid low common keys in module aliases so they don't get huge. */
#define KEY_MIN_INTERESTING    KEY_MUTE
#define KEY_MAX            0x2ff
#define KEY_CNT            (KEY_MAX+1)

/*
 * Relative axes
 */

#define REL_X            0x00
#define REL_Y            0x01
#define REL_Z            0x02
#define REL_RX            0x03
#define REL_RY            0x04
#define REL_RZ            0x05
#define REL_HWHEEL        0x06
#define REL_DIAL        0x07
#define REL_WHEEL        0x08
#define REL_MISC        0x09
#define REL_MAX            0x0f
#define REL_CNT            (REL_MAX+1)

/*
 * Absolute axes
 */

#define ABS_X            0x00
#define ABS_Y            0x01
#define ABS_Z            0x02
#define ABS_RX            0x03
#define ABS_RY            0x04
#define ABS_RZ            0x05
#define ABS_THROTTLE        0x06
#define ABS_RUDDER        0x07
#define ABS_WHEEL        0x08
#define ABS_GAS            0x09
#define ABS_BRAKE        0x0a
#define ABS_HAT0X        0x10
#define ABS_HAT0Y        0x11
#define ABS_HAT1X        0x12
#define ABS_HAT1Y        0x13
#define ABS_HAT2X        0x14
#define ABS_HAT2Y        0x15
#define ABS_HAT3X        0x16
#define ABS_HAT3Y        0x17
#define ABS_PRESSURE        0x18
#define ABS_DISTANCE        0x19
#define ABS_TILT_X        0x1a
#define ABS_TILT_Y        0x1b
#define ABS_TOOL_WIDTH        0x1c

#define ABS_VOLUME        0x20

#define ABS_MISC        0x28

#define ABS_MT_SLOT        0x2f    /* MT slot being modified */
#define ABS_MT_TOUCH_MAJOR    0x30    /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR    0x31    /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR    0x32    /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR    0x33    /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION    0x34    /* Ellipse orientation */
#define ABS_MT_POSITION_X    0x35    /* Center X ellipse position */
#define ABS_MT_POSITION_Y    0x36    /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE    0x37    /* Type of touching device */
#define ABS_MT_BLOB_ID        0x38    /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID    0x39    /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE        0x3a    /* Pressure on contact area */
#define ABS_MT_DISTANCE        0x3b    /* Contact hover distance */


#define ABS_MAX            0x3f
#define ABS_CNT            (ABS_MAX+1)

/*
 * Switch events
 */

#define SW_LID            0x00  /* set = lid shut */
#define SW_TABLET_MODE        0x01  /* set = tablet mode */
#define SW_HEADPHONE_INSERT    0x02  /* set = inserted */
#define SW_RFKILL_ALL        0x03  /* rfkill master switch, type "any"
                     set = radio enabled */
#define SW_RADIO        SW_RFKILL_ALL    /* deprecated */
#define SW_MICROPHONE_INSERT    0x04  /* set = inserted */
#define SW_DOCK            0x05  /* set = plugged into dock */
#define SW_LINEOUT_INSERT    0x06  /* set = inserted */
#define SW_JACK_PHYSICAL_INSERT 0x07  /* set = mechanical switch set */
#define SW_VIDEOOUT_INSERT    0x08  /* set = inserted */
#define SW_CAMERA_LENS_COVER    0x09  /* set = lens covered */
#define SW_KEYPAD_SLIDE        0x0a  /* set = keypad slide out */
#define SW_FRONT_PROXIMITY    0x0b  /* set = front proximity sensor active */
#define SW_ROTATE_LOCK        0x0c  /* set = rotate locked/disabled */
#define SW_LINEIN_INSERT    0x0d  /* set = inserted */
#define SW_MAX            0x0f
#define SW_CNT            (SW_MAX+1)

/*
 * Misc events
 */

#define MSC_SERIAL        0x00
#define MSC_PULSELED        0x01
#define MSC_GESTURE        0x02
#define MSC_RAW            0x03
#define MSC_SCAN        0x04
#define MSC_MAX            0x07
#define MSC_CNT            (MSC_MAX+1)

/*
 * LEDs
 */

#define LED_NUML        0x00
#define LED_CAPSL        0x01
#define LED_SCROLLL        0x02
#define LED_COMPOSE        0x03
#define LED_KANA        0x04
#define LED_SLEEP        0x05
#define LED_SUSPEND        0x06
#define LED_MUTE        0x07
#define LED_MISC        0x08
#define LED_MAIL        0x09
#define LED_CHARGING        0x0a
#define LED_MAX            0x0f
#define LED_CNT            (LED_MAX+1)

/*
 * Autorepeat values
 */

#define REP_DELAY        0x00
#define REP_PERIOD        0x01
#define REP_MAX            0x01
#define REP_CNT            (REP_MAX+1)

/*
 * Sounds
 */

#define SND_CLICK        0x00
#define SND_BELL        0x01
#define SND_TONE        0x02
#define SND_MAX            0x07
#define SND_CNT            (SND_MAX+1)

/*
 * IDs.
 */

#define ID_BUS            0
#define ID_VENDOR        1
#define ID_PRODUCT        2
#define ID_VERSION        3

#define BUS_PCI            0x01
#define BUS_ISAPNP        0x02
#define BUS_USB            0x03
#define BUS_HIL            0x04
#define BUS_BLUETOOTH        0x05
#define BUS_VIRTUAL        0x06

#define BUS_ISA            0x10
#define BUS_I8042        0x11
#define BUS_XTKBD        0x12
#define BUS_RS232        0x13
#define BUS_GAMEPORT        0x14
#define BUS_PARPORT        0x15
#define BUS_AMIGA        0x16
#define BUS_ADB            0x17
#define BUS_I2C            0x18
#define BUS_HOST        0x19
#define BUS_GSC            0x1A
#define BUS_ATARI        0x1B
#define BUS_SPI            0x1C

/*
 * MT_TOOL types
 */
#define MT_TOOL_FINGER        0
#define MT_TOOL_PEN        1
#define MT_TOOL_MAX        1

/*
 * Values describing the status of a force-feedback effect
 */
#define FF_STATUS_STOPPED    0x00
#define FF_STATUS_PLAYING    0x01
#define FF_STATUS_MAX        0x01

/*
 * Structures used in ioctls to upload effects to a device
 * They are pieces of a bigger structure (called ff_effect)
 */

/*
 * All duration values are expressed in ms. Values above 32767 ms (0x7fff)
 * should not be used and have unspecified results.
 */

/**
 * struct ff_replay - defines scheduling of the force-feedback effect
 * @length: duration of the effect
 * @delay: delay before effect should start playing
 */
struct ff_replay {
    __u16 length;
    __u16 delay;
};

/**
 * struct ff_trigger - defines what triggers the force-feedback effect
 * @button: number of the button triggering the effect
 * @interval: controls how soon the effect can be re-triggered
 */
struct ff_trigger {
    __u16 button;
    __u16 interval;
};

/**
 * struct ff_envelope - generic force-feedback effect envelope
 * @attack_length: duration of the attack (ms)
 * @attack_level: level at the beginning of the attack
 * @fade_length: duration of fade (ms)
 * @fade_level: level at the end of fade
 *
 * The @attack_level and @fade_level are absolute values; when applying
 * envelope force-feedback core will convert to positive/negative
 * value based on polarity of the default level of the effect.
 * Valid range for the attack and fade levels is 0x0000 - 0x7fff
 */
struct ff_envelope {
    __u16 attack_length;
    __u16 attack_level;
    __u16 fade_length;
    __u16 fade_level;
};

/**
 * struct ff_constant_effect - defines parameters of a constant force-feedback effect
 * @level: strength of the effect; may be negative
 * @envelope: envelope data
 */
struct ff_constant_effect {
    __s16 level;
    struct ff_envelope envelope;
};

/**
 * struct ff_ramp_effect - defines parameters of a ramp force-feedback effect
 * @start_level: beginning strength of the effect; may be negative
 * @end_level: final strength of the effect; may be negative
 * @envelope: envelope data
 */
struct ff_ramp_effect {
    __s16 start_level;
    __s16 end_level;
    struct ff_envelope envelope;
};

/**
 * struct ff_condition_effect - defines a spring or friction force-feedback effect
 * @right_saturation: maximum level when joystick moved all way to the right
 * @left_saturation: same for the left side
 * @right_coeff: controls how fast the force grows when the joystick moves
 *    to the right
 * @left_coeff: same for the left side
 * @deadband: size of the dead zone, where no force is produced
 * @center: position of the dead zone
 */
struct ff_condition_effect {
    __u16 right_saturation;
    __u16 left_saturation;

    __s16 right_coeff;
    __s16 left_coeff;

    __u16 deadband;
    __s16 center;
};

/**
 * struct ff_periodic_effect - defines parameters of a periodic force-feedback effect
 * @waveform: kind of the effect (wave)
 * @period: period of the wave (ms)
 * @magnitude: peak value
 * @offset: mean value of the wave (roughly)
 * @phase: 'horizontal' shift
 * @envelope: envelope data
 * @custom_len: number of samples (FF_CUSTOM only)
 * @custom_data: buffer of samples (FF_CUSTOM only)
 *
 * Known waveforms - FF_SQUARE, FF_TRIANGLE, FF_SINE, FF_SAW_UP,
 * FF_SAW_DOWN, FF_CUSTOM. The exact syntax FF_CUSTOM is undefined
 * for the time being as no driver supports it yet.
 *
 * Note: the data pointed by custom_data is copied by the driver.
 * You can therefore dispose of the memory after the upload/update.
 */
struct ff_periodic_effect {
    __u16 waveform;
    __u16 period;
    __s16 magnitude;
    __s16 offset;
    __u16 phase;

    struct ff_envelope envelope;

    __u32 custom_len;
    __s16 *custom_data;
};

/**
 * struct ff_rumble_effect - defines parameters of a periodic force-feedback effect
 * @strong_magnitude: magnitude of the heavy motor
 * @weak_magnitude: magnitude of the light one
 *
 * Some rumble pads have two motors of different weight. Strong_magnitude
 * represents the magnitude of the vibration generated by the heavy one.
 */
struct ff_rumble_effect {
    __u16 strong_magnitude;
    __u16 weak_magnitude;
};

/**
 * struct ff_effect - defines force feedback effect
 * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
 *    FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM)
 * @id: an unique id assigned to an effect
 * @direction: direction of the effect
 * @trigger: trigger conditions (struct ff_trigger)
 * @replay: scheduling of the effect (struct ff_replay)
 * @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect,
 *    ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further
 *    defining effect parameters
 *
 * This structure is sent through ioctl from the application to the driver.
 * To create a new effect application should set its @id to -1; the kernel
 * will return assigned @id which can later be used to update or delete
 * this effect.
 *
 * Direction of the effect is encoded as follows:
 *    0 deg -> 0x0000 (down)
 *    90 deg -> 0x4000 (left)
 *    180 deg -> 0x8000 (up)
 *    270 deg -> 0xC000 (right)
 */
struct ff_effect {
    __u16 type;
    __s16 id;
    __u16 direction;
    struct ff_trigger trigger;
    struct ff_replay replay;

    union {
        struct ff_constant_effect constant;
        struct ff_ramp_effect ramp;
        struct ff_periodic_effect periodic;
        struct ff_condition_effect condition[2]; /* One for each axis */
        struct ff_rumble_effect rumble;
    } u;
};

/*
 * Force feedback effect types
 */

#define FF_RUMBLE    0x50
#define FF_PERIODIC    0x51
#define FF_CONSTANT    0x52
#define FF_SPRING    0x53
#define FF_FRICTION    0x54
#define FF_DAMPER    0x55
#define FF_INERTIA    0x56
#define FF_RAMP        0x57

#define FF_EFFECT_MIN    FF_RUMBLE
#define FF_EFFECT_MAX    FF_RAMP

/*
 * Force feedback periodic effect types
 */

#define FF_SQUARE    0x58
#define FF_TRIANGLE    0x59
#define FF_SINE        0x5a
#define FF_SAW_UP    0x5b
#define FF_SAW_DOWN    0x5c
#define FF_CUSTOM    0x5d

#define FF_WAVEFORM_MIN    FF_SQUARE
#define FF_WAVEFORM_MAX    FF_CUSTOM

/*
 * Set ff device properties
 */

#define FF_GAIN        0x60
#define FF_AUTOCENTER    0x61

#define FF_MAX        0x7f
#define FF_CNT        (FF_MAX+1)

#endif

Proszę o pomoc i przykład chociaż jednego klawisza jak to skonfigurować żeby działało? Np przycisku red (scan code: 0x2B   key code: red) który obecnie nie jest widziany przez xev i cały system.

Offline

 

#13  2012-10-11 18:30:55

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

OK, pokażę od początku do końca jak ja to kiedyś zrobiłem (na przykładzie mojego klawisza red: 0x80B). Wtedy jeszcze nie miałem udeva, więc z niego nie skorzystałem, choć teraz pewnie byłoby prościej tak zrobić. Mój przykład ma tę zaletę, że u mnie działa :)

Nie ma znaczenia w jaki sposób wskażemy naszego pilota - można skorzystać bezpośrednio z /dev/inputX lub któregoś z podkatalogów w /dev/input:

Kod:

# /lib/udev/keymap -i /dev/input/by-path/pci-0000\:05\:05.0-event-ir
 
Press ESC to finish, or Control-C if this device is not your primary keyboard
got scan code event 0x80B without a key code event
^C

Wcisnąłem przycisk red na pilocie - program poinformował mnie, że nie ma on przypisanego żadnego keycodu, a scancod wynosi 0x80B. Wychodzimy, zgodnie z opisem, za pomocą ^C - ponieważ pilot nie jest naszą główną klawiaturą :)

Teraz musimy przypisać wspomniany keycode, jednak najpierw musimy dowiedzieć się, które są wolne, żeby nie popsuć sobie klawiatury. Można to zrobić np. za pomocą polecenia

Kod:

$ xmodmap -pke

Pokaże się nam obszerna lista, dla zwięzłości podam jak wygląda moje ostatnie 10 wierszy:

Kod:

keycode 246 = XF86WLAN NoSymbol XF86WLAN
keycode 247 =
keycode 248 =
keycode 249 =
keycode 250 =
keycode 251 =
keycode 252 =
keycode 253 =
keycode 254 = XF86Video NoSymbol XF86Video
keycode 255 =

Wypatrujemy nieprzypisanego keycodu w naszej tabeli. Wybieram sobie np. 247. Teraz małe utrudnienie: jeśli spojrzymy na początek listy, to zauważymy, że pierwszy kod ma numerek 8. Jest tak, ponieważ pierwsze 8 (0-7) numerów jest zajętych przez klawisze modyfikujące (Shift, Ctrl itp.), Jednak program setkeycodes liczy inaczej i dlatego musimy w następnym poleceniu użyć liczby o 8 mniejszej. Zatem: 247-8=239, a więc:

Kod:

# setkeycodes 0x80B 239

W ten sposób przypisałem mojemu czerwonemu klawiszowi keycode 247
Teraz możemy zweryfikować, czy klawisz jest już widziany przez xev. Wciskam przycisk i:

Kod:

KeyPress event, serial 40, synthetic NO, window 0x2800001,
    root 0x293, subw 0x0, time 2531440, (95,1), root:(141,474),
    state 0x10, keycode 247 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Teraz możemy już przypisać klawiszowi konkretną wartość np. za pomocą programu xmodmap:

Kod:

$ xmodmap -e "keycode 247 = XF86_Red"

i weryfikacja w xevie:

Kod:

KeyPress event, serial 37, synthetic NO, window 0x2800001,
    root 0x293, subw 0x0, time 2806796, (870,-259), root:(916,214),
    state 0x10, keycode 247 (keysym 0x1008ffa3, XF86Red), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Aby te ustawienia zachowały się po ponownym uruchomieniu systemu, proponuję dodać

Kod:

setkeycodes 0x80B 239

do /etc/rc.local (przed "exit 0") a poniższy wiersz do pliku ~/.Xmodmap (pewnie trzeba go będzie utworzyć):

Kod:

keycode 247 = XF86_Red

Nie dam sobie głowy uciąć, czy plik z tej lokalizacji jest w Debianie automatycznie czytany przy starcie systemu; gdyby tak nie było, można go wykonać np. z wspomnianego /etc/rc.local za, dopisując tam wiersz (przed "exit 0"):

Kod:

xmodmap /home/$NAZWA_UŻYTKOWNIKA/.Xmodmap

Więcej grzechów nie pamiętam ;)


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#14  2012-10-11 22:44:05

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Bardzo naprawdę dziękuję że poświęciłeś swój cenny czas żeby mi pomóc. Zrobiłem to u siebie na przykładzie czerwonego pilota, czyli:

Kod:

root@darek-PC:/home/darek# /lib/udev/keymap -i input/event13
scan code: 0x2B   key code: red

Przypisałem do pierwszego wolnego pustego miejsca, u mnie było 93, czyli 85

Kod:

root@darek-PC:/home/darek# setkeycodes 0x2B 85

test w xev

Kod:

LeaveNotify event, serial 36, synthetic NO, window 0x6000001,
    root 0x15a, subw 0x0, time 15147437, (185,95), root:(1102,118),
    mode NotifyNormal, detail NotifyNonlinear, same_screen YES,
    focus YES, state 0

Następnie:

Kod:

darek@darek-PC:~$ xmodmap -e "keycode 85 = XF86_Red"

i test w xev

Kod:

KeyRelease event, serial 36, synthetic NO, window 0x6000001,
    root 0x15a, subw 0x0, time 15293988, (-669,537), root:(248,560),
    state 0x0, keycode 93 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

No i teraz podsumowanie. Czy to działa? TAK i NIE. Tak bo jak naciskam przycisk red na pilocie to xev reaguje i wyświetla to co wyżej przedstawiłem, ale w praktyce to nie działa i system nie widzi mi tego klawisza red. jeśli np chce przechwycić jakiś skrót klawiaturowy przy pomocy klawisza red to dalej null nic się nie dzieje i system na niego nie reaguje. Ja już nie wiem co jest dalej źle? :(

Offline

 

#15  2012-10-12 00:47:56

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Kod:

xmodmap -e "keycode 85 = XF86_Red"

Tutaj powinien być już zwykły numerek, czyli 93 (tak jak pokazuje xev).

Inna sprawa, że... właściwie nigdy nie korzystałem z tych czterech kolorowych, telegazetowych przycisków w żadnym programie. Jak teraz sprawdziłem, próbując przypisać temu przyciskowi jakąś akcję w Ustawieniach systemowych KDE, pojawia mi się komunikat, że klawisz ten nie jest obsługiwany przez KDE. Gdy przypisałem mu za pomocą xmodmap inne znaczenie - XF86_Launch0 (wyglądało dość bezpiecznie) udało się przypisać akcję bez problemu, także jest tu pewne pole do eksperymentów.

Natomiast wszystkie inne klawisze na pilocie, takie jak play (XF86_AudioPlay), record (XF86_AudioRecord), fwd/rev, strzałki, głośność, góra/dół, mute itp. w większości programów działają nawet bez konieczności przypisywania dodatkowych skrótów, więc sugeruję zacząć od któregoś z nich. I jeszcze dla porządku - nazwy klawiszy bierzemy z [url=http://forum.dug.net.pl/viewtopic.php?pid=211746#p211746]tego pliku[/url] zamieniając początkowe XF86XK na XF86.

PS Mam wrażenie, że konfiguracja lirca mogła okazać się znacznie prostsza :|


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#16  2012-10-12 20:35:03

  vnu007dl - Użytkownik

vnu007dl
Użytkownik
Zarejestrowany: 2010-11-01

Re: Lirc - gdzie są pliki konfiguracyjne? Nie mam ich w /etc/lirc

Super ok, wygląda na to że działa teraz, zobaczę jak to będzie po restarcie systemu czy mi zapamięta te ustawienia w pliku .xmodmap. Jeszcze co do tych np przycisków z kolorami np przycisk red, hmm ale dlaczego system miałby go nie widzieć, skoro w pliku XF86keysym.h są zdefiniowane

Kod:

#define XF86XK_Red        0x1008FFA3   /* Red button                  */
#define XF86XK_Green        0x1008FFA4   /* Green button                */
#define XF86XK_Yellow        0x1008FFA5   /* Yellow button               */
#define XF86XK_Blue             0x1008FFA6   /* Blue button                 */

Więc teoretycznie do przycisku red mogę sobie wybrać akcję jaka mi się podoba.
PS. No ja myślę że lirc jest gorszy w obsłudze bo mam go też skonfigurowanego, ale żadnego pożytku z niego bo dla każdej aplikacji trzeba wpisy robić w pliku .lircrc i też się z tym męczyłem i nic mi nie działa, a tak mogę otworzyć konfigurację każdej aplikacji i przechwycić dla dowolnej akcji dany przycisk pilota.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.028 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00020 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00192 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='13.59.95.170' WHERE u.id=1
0.00111 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '13.59.95.170', 1732945006)
0.00054 SELECT * FROM punbb_online WHERE logged<1732944706
0.00397 DELETE FROM punbb_online WHERE ident='18.188.227.108'
0.00086 SELECT topic_id FROM punbb_posts WHERE id=212723
0.00327 SELECT id FROM punbb_posts WHERE topic_id=22029 ORDER BY posted
0.00116 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=22029 AND t.moved_to IS NULL
0.00012 SELECT search_for, replace_with FROM punbb_censoring
0.00548 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=22029 ORDER BY p.id LIMIT 0,25
0.00306 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=22029
Total query time: 0.02174 s