Appunti su ir-keytable (no LIRC)

Appunti di uso sul ricevitore IR GPIO e l'utility ir-keytable (senza LIRC Linux Infrared Remote Control)

Gli step per abilitare il funzionamento di un telecomando a raggi infrarossi con ir-keytable sono i seguenti:

  • collegare il ricevitore hardware (TSOP48xx)
  • installare e configurare il driver PIO
  • installare la utility ir-keytable
  • configurare uno o piu' telecomandi

Installazione hardware

Lo schema mostrato e' riferito al modello TSOP con portante a 38 kHz:

Installazione driver GPIO

Per l'utilizzo di LIRC con un ricevitore TSOP e' necessario aggiungere/scommentare il seguente codice nel file /boot/config.txt

#
# https://forum.libreelec.tv/thread/4413-7-95-1-lirc-not-working-correct-on-rpi/
#
dtoverlay=gpio-ir,gpio_pin=23,gpio_pull=1,rc-map-name=rc-rc6-mce

e fare il reboot del sistema.

Installazione utility ir-keytable


# Remove LIRC from your system
% sudo apt-get purge lirc

# If the /etc/lirc folder exists on your system, remove that as well
% sudo rm -rf /etc/lirc

# install ir-keytable
sudo apt-get update && sudo apt-get dist-upgrade -y
sudo apt-get install ir-keytable -y

Configurazione telecomandi

ir-keytable e' un sistema molto piu' semplice quando comparato con LIRC, non richiede installazione di device drivers particolari perche' usa quelli del kernel mainstream che su RPI sono inclusi ed i cui DTS sono gia' presenti e, come gia' visto, configurabili su /boot/config.txt .

Il difetto principale e' che , rispetto a LIRC, il numero dei telecomandi gia' presenti e' molto ridotto e quindi, con tutta probabilita', occorrera' configurarli da zero.

Lista protocoli supportati

pi@rpi-iw0hdv:~ $ ir-keytable -p
ir-keytable: option requires an argument -- 'p'
Try `ir-keytable --help' or `ir-keytable --usage' for more information.
Found /sys/class/rc/rc0/ (/dev/input/event0) with:
    Driver gpio-rc-recv, table rc-rc6-mce
    Supported protocols: unknown other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp 

Lista telecomandi

pi@rpi-iw0hdv:~ $ ls /lib/udev/rc_keymaps/
a800                      behold               dvico_portable      kworld_315u              pinnacle_color          terratec_cinergy_s2_hd
adstech_dvb_t_pci         behold_columbus      em_terratec         kworld_pc150u            pinnacle_grey           terratec_cinergy_xs
af9005                    budget_ci_old        encore_enltv        kworld_plus_tv_analog    pinnacle_pctv_hd        terratec_slim
alink_dtu_m               cec                  encore_enltv2       leadtek_y04g0051         pixelview               terratec_slim_2
allwinner_ba10_tv_box     cinergy              encore_enltv_fm53   lme2510                  pixelview_002t          tevii_nec
allwinner_i12_a20_tv_box  cinergy_1400         evga_indtube        manli                    pixelview_mk12          tivo
anysee                    cinergyt2            eztv                medion_x10               pixelview_new           total_media_in_hand
apac_viewcomp             d680_dmb             flydvb              medion_x10_digitainer    powercolor_real_angel   total_media_in_hand_02
asus_pc39                 delock_61959         flyvideo            medion_x10_or2x          proteus_2309            trekstor
asus_ps3_100              dib0700_nec          fusionhdtv_mce      megasky                  purpletv                tt_1500
ati_tv_wonder_hd_600      dib0700_rc5          gadmei_rm008z       msi_digivox_ii           pv951                   tvwalkertwin
ati_x10                   dibusb               genius_tvgo_a11mce  msi_digivox_iii          rc6_mce                 twinhan_dtv_cab_ci
avermedia                 digitalnow_tinytwin  gotview7135         msi_tvanywhere           real_audio_220_32_keys  twinhan_vp1027_dvbs
avermedia_a16d            digittrade           haupp               msi_tvanywhere_plus      reddo                   videomate_k100
avermedia_cardbus         digitv               hauppauge           nebula                   snapstream_firefly      videomate_s350
avermedia_dvbt            dm1105_nec           imon_mce            nec_terratec_cinergy_xs  streamzap               videomate_tv_pvr
avermedia_m135a           dntv_live_dvb_t      imon_pad            norwood                  su3000                  vp702x
avermedia_m733a_rm_k6     dntv_live_dvbt_pro   iodata_bctv7e       npgtech                  tbs_nec                 vp7045
avermedia_rm_ks           dtt200u              it913x_v1           opera1                   technisat_ts35          winfast
avertv_303                dvbsky               it913x_v2           pctv_sedna               technisat_usb2          winfast_usbii_deluxe
azurewave_ad_tu700        dvico_mce            kaiomy              pinnacle310e             terratec_cinergy_c_pci  wobo_i5

Test telecomando

Purtroppo per poter appurare quale protocollo supportoa il telecomando sotto test occorre andare per esclusione, abilitando dapprima tutti i protocolli disponibili:

pi@rpi-iw0hdv:~ $ sudo ir-keytable -v -t -p rc-5,rc-5-sz,jvc,sony,nec,sanyo,mce_kbd,rc-6,sharp,xmp
Found device /sys/class/rc/rc0/
Input sysfs node is /sys/class/rc/rc0/input0/
Event sysfs node is /sys/class/rc/rc0/input0/event0/
Parsing uevent /sys/class/rc/rc0/input0/event0/uevent
/sys/class/rc/rc0/input0/event0/uevent uevent MAJOR=13
/sys/class/rc/rc0/input0/event0/uevent uevent MINOR=64
/sys/class/rc/rc0/input0/event0/uevent uevent DEVNAME=input/event0
Parsing uevent /sys/class/rc/rc0/uevent
/sys/class/rc/rc0/uevent uevent NAME=rc-rc6-mce
/sys/class/rc/rc0/uevent uevent DRV_NAME=gpio-rc-recv
input device is /dev/input/event0
/sys/class/rc/rc0/protocols protocol other (disabled)
/sys/class/rc/rc0/protocols protocol unknown (disabled)
/sys/class/rc/rc0/protocols protocol rc-5 (disabled)
/sys/class/rc/rc0/protocols protocol nec (disabled)
/sys/class/rc/rc0/protocols protocol rc-6 (disabled)
/sys/class/rc/rc0/protocols protocol jvc (disabled)
/sys/class/rc/rc0/protocols protocol sony (enabled)
/sys/class/rc/rc0/protocols protocol rc-5-sz (disabled)
/sys/class/rc/rc0/protocols protocol sanyo (disabled)
/sys/class/rc/rc0/protocols protocol sharp (disabled)
/sys/class/rc/rc0/protocols protocol mce_kbd (disabled)
/sys/class/rc/rc0/protocols protocol xmp (disabled)
/sys/class/rc/rc0/protocols protocol cec (disabled)
/sys/class/rc/rc0/protocols protocol lirc (enabled)
Opening /dev/input/event0
Input Protocol version: 0x00010001
Protocols changed to rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp 
Testing events. Please, press CTRL-C to abort.

Premendo i tasti del telecomando vengono visualizzati i codici ricevuti (questo nel caso il protocollo sia supportato). Eliminando i protocolli uno ad uno , si riesce ad indentificare quello corretto (nel nostro esempio il sony)..

...
...
1508273202.082676: event type EV_MSC(0x04): scancode = 0x1f0026
1508273202.082676: event type EV_SYN(0x00).

se, come nell'esempio, non compare il nome del tasto, la tabella di decodifica non supporta il telecomando.La cosa piu' semplice e' cercare se in qualcuno dei telecomandi supportati compare lo scancode:

grep -iH '0x1f0026' /lib/udev/rc_keymaps/*

Se la ricerca e' vana, occorre creare autonomamnnete la mappa scan scode -> tasto, premendo tutti i tasti di interesse del proprio telecomando ed annotando

Creazione file di configurazione

Il formato del file di map e' il seguente:

pi@rpi-iw0hdv:~ $ cat robophilo.txt
# table robophilo, type: sony
0x1f0026 KEY_1
0x1f0027 KEY_2
0x1f0028 KEY_3
0x1f0029 KEY_4
0x1f002a KEY_5
0x1f002b KEY_6
0x1f002c KEY_7
0x1f002d KEY_8
0x1f002e KEY_9
0x1f002f KEY_SERVO
0x1f0030 KEY_0
0x1f0031 KEY_POSITION

la prina riga contiene il nome simbolico del telecomda ad il protocollo, seguono le corrispomdeze scancode / tasto.

Tutti i codici tasto ammessi sono visualizzabili con il seguente comando:

pi@rpi-iw0hdv:~ $ irrecord -l
KEY_0
KEY_102ND
KEY_10CHANNELSDOWN
KEY_10CHANNELSUP
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_A
KEY_AB
KEY_ADDRESSBOOK
KEY_AGAIN
KEY_ALS_TOGGLE
KEY_ALTERASE
KEY_ANGLE
KEY_APOSTROPHE
KEY_APPSELECT
KEY_ARCHIVE
KEY_ATTENDANT_OFF
KEY_ATTENDANT_ON
KEY_ATTENDANT_TOGGLE
KEY_AUDIO
KEY_AUX
KEY_B
KEY_BACK
KEY_BACKSLASH
KEY_BACKSPACE
KEY_BASSBOOST
KEY_BATTERY
KEY_BLUE
KEY_BLUETOOTH
KEY_BOOKMARKS
KEY_BREAK
KEY_BRIGHTNESS_AUTO
KEY_BRIGHTNESS_CYCLE
KEY_BRIGHTNESSDOWN
KEY_BRIGHTNESS_MAX
KEY_BRIGHTNESS_MIN
KEY_BRIGHTNESSUP
KEY_BRL_DOT10
KEY_BRL_DOT1
KEY_BRL_DOT2
KEY_BRL_DOT3
KEY_BRL_DOT4
KEY_BRL_DOT5
KEY_BRL_DOT6
KEY_BRL_DOT7
KEY_BRL_DOT8
KEY_BRL_DOT9
KEY_BUTTONCONFIG
KEY_C
KEY_CALC
KEY_CALENDAR
KEY_CAMERA
KEY_CAMERA_DOWN
KEY_CAMERA_FOCUS
KEY_CAMERA_LEFT
KEY_CAMERA_RIGHT
KEY_CAMERA_UP
KEY_CAMERA_ZOOMIN
KEY_CAMERA_ZOOMOUT
KEY_CANCEL
KEY_CAPSLOCK
KEY_CD
KEY_CHANNEL
KEY_CHANNELDOWN
KEY_CHANNELUP
KEY_CHAT
KEY_CLEAR
KEY_CLOSE
KEY_CLOSECD
KEY_COFFEE
KEY_COMMA
KEY_COMPOSE
KEY_COMPUTER
KEY_CONFIG
KEY_CONNECT
KEY_CONTEXT_MENU
KEY_CONTROLPANEL
KEY_COPY
KEY_CUT
KEY_CYCLEWINDOWS
KEY_D
KEY_DASHBOARD
KEY_DATABASE
KEY_DEL_EOL
KEY_DEL_EOS
KEY_DELETE
KEY_DELETEFILE
KEY_DEL_LINE
KEY_DIGITS
KEY_DIRECTION
KEY_DIRECTORY
KEY_DISPLAY_OFF
KEY_DISPLAYTOGGLE
KEY_DOCUMENTS
KEY_DOLLAR
KEY_DOT
KEY_DOWN
KEY_DVD
KEY_E
KEY_EDIT
KEY_EDITOR
KEY_EJECTCD
KEY_EJECTCLOSECD
KEY_EMAIL
KEY_END
KEY_ENTER
KEY_EPG
KEY_EQUAL
KEY_ESC
KEY_EURO
KEY_EXIT
KEY_F10
KEY_F11
KEY_F12
KEY_F13
KEY_F14
KEY_F15
KEY_F1
KEY_F16
KEY_F17
KEY_F18
KEY_F19
KEY_F20
KEY_F21
KEY_F22
KEY_F23
KEY_F24
KEY_F2
KEY_F
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_FASTFORWARD
KEY_FAVORITES
KEY_FILE
KEY_FINANCE
KEY_FIND
KEY_FIRST
KEY_FN
KEY_FN_1
KEY_FN_2
KEY_FN_B
KEY_FN_D
KEY_FN_E
KEY_FN_ESC
KEY_FN_F
KEY_FN_F10
KEY_FN_F1
KEY_FN_F11
KEY_FN_F12
KEY_FN_F2
KEY_FN_F3
KEY_FN_F4
KEY_FN_F5
KEY_FN_F6
KEY_FN_F7
KEY_FN_F8
KEY_FN_F9
KEY_FN_S
KEY_FORWARD
KEY_FORWARDMAIL
KEY_FRAMEBACK
KEY_FRAMEFORWARD
KEY_FRONT
KEY_G
KEY_GAMES
KEY_GOTO
KEY_GRAPHICSEDITOR
KEY_GRAVE
KEY_GREEN
KEY_H
KEY_HANGEUL
KEY_HANJA
KEY_HELP
KEY_HENKAN
KEY_HIRAGANA
KEY_HOME
KEY_HOMEPAGE
KEY_HP
KEY_I
KEY_IMAGES
KEY_INFO
KEY_INSERT
KEY_INS_LINE
KEY_ISO
KEY_J
KEY_JOURNAL
KEY_K
KEY_KATAKANA
KEY_KATAKANAHIRAGANA
KEY_KBDILLUMDOWN
KEY_KBDILLUMTOGGLE
KEY_KBDILLUMUP
KEY_KBDINPUTASSIST_ACCEPT
KEY_KBDINPUTASSIST_CANCEL
KEY_KBDINPUTASSIST_NEXT
KEY_KBDINPUTASSIST_NEXTGROUP
KEY_KBDINPUTASSIST_PREV
KEY_KBDINPUTASSIST_PREVGROUP
KEY_KEYBOARD
KEY_KP0
KEY_KP1
KEY_KP2
KEY_KP3
KEY_KP4
KEY_KP5
KEY_KP6
KEY_KP7
KEY_KP8
KEY_KP9
KEY_KPASTERISK
KEY_KPCOMMA
KEY_KPDOT
KEY_KPENTER
KEY_KPEQUAL
KEY_KPJPCOMMA
KEY_KPLEFTPAREN
KEY_KPMINUS
KEY_KPPLUS
KEY_KPPLUSMINUS
KEY_KPRIGHTPAREN
KEY_KPSLASH
KEY_L
KEY_LANGUAGE
KEY_LAST
KEY_LEFT
KEY_LEFTALT
KEY_LEFTBRACE
KEY_LEFTCTRL
KEY_LEFTMETA
KEY_LEFTSHIFT
KEY_LIGHTS_TOGGLE
KEY_LINEFEED
KEY_LIST
KEY_LOGOFF
KEY_M
KEY_MACRO
KEY_MAIL
KEY_MAX
KEY_MEDIA
KEY_MEDIA_REPEAT
KEY_MEMO
KEY_MENU
KEY_MESSENGER
KEY_MHP
KEY_MICMUTE
KEY_MINUS
KEY_MODE
KEY_MOVE
KEY_MP3
KEY_MSDOS
KEY_MUHENKAN
KEY_MUTE
KEY_N
KEY_NEW
KEY_NEWS
KEY_NEXT
KEY_NEXTSONG
KEY_NUMERIC_0
KEY_NUMERIC_1
KEY_NUMERIC_2
KEY_NUMERIC_3
KEY_NUMERIC_4
KEY_NUMERIC_5
KEY_NUMERIC_6
KEY_NUMERIC_7
KEY_NUMERIC_8
KEY_NUMERIC_9
KEY_NUMERIC_POUND
KEY_NUMERIC_STAR
KEY_NUMLOCK
KEY_O
KEY_OK
KEY_OPEN
KEY_OPTION
KEY_P
KEY_PAGEDOWN
KEY_PAGEUP
KEY_PASTE
KEY_PAUSE
KEY_PAUSECD
KEY_PC
KEY_PHONE
KEY_PLAY
KEY_PLAYCD
KEY_PLAYER
KEY_PLAYPAUSE
KEY_POWER
KEY_POWER2
KEY_PRESENTATION
KEY_PREVIOUS
KEY_PREVIOUSSONG
KEY_PRINT
KEY_PROG1
KEY_PROG2
KEY_PROG3
KEY_PROG4
KEY_PROGRAM
KEY_PROPS
KEY_PVR
KEY_Q
KEY_QUESTION
KEY_R
KEY_RADIO
KEY_RECORD
KEY_RED
KEY_REDO
KEY_REFRESH
KEY_REPLY
KEY_RESERVED
KEY_RESTART
KEY_REWIND
KEY_RFKILL
KEY_RIGHT
KEY_RIGHTALT
KEY_RIGHTBRACE
KEY_RIGHTCTRL
KEY_RIGHTMETA
KEY_RIGHTSHIFT
KEY_RO
KEY_S
KEY_SAT
KEY_SAT2
KEY_SAVE
KEY_SCALE
KEY_SCREEN
KEY_SCREENSAVER
KEY_SCROLLDOWN
KEY_SCROLLLOCK
KEY_SCROLLUP
KEY_SEARCH
KEY_SELECT
KEY_SEMICOLON
KEY_SEND
KEY_SENDFILE
KEY_SETUP
KEY_SHOP
KEY_SHUFFLE
KEY_SLASH
KEY_SLEEP
KEY_SLOW
KEY_SOUND
KEY_SPACE
KEY_SPELLCHECK
KEY_SPORT
KEY_SPREADSHEET
KEY_STOP
KEY_STOPCD
KEY_SUBTITLE
KEY_SUSPEND
KEY_SWITCHVIDEOMODE
KEY_SYSRQ
KEY_T
KEY_TAB
KEY_TAPE
KEY_TASKMANAGER
KEY_TEEN
KEY_TEXT
KEY_TIME
KEY_TITLE
KEY_TOUCHPAD_OFF
KEY_TOUCHPAD_ON
KEY_TOUCHPAD_TOGGLE
KEY_TUNER
KEY_TV
KEY_TV2
KEY_TWEN
KEY_U
KEY_UNDO
KEY_UNKNOWN
KEY_UP
KEY_UWB
KEY_V
KEY_VCR
KEY_VCR2
KEY_VENDOR
KEY_VIDEO
KEY_VIDEO_NEXT
KEY_VIDEOPHONE
KEY_VIDEO_PREV
KEY_VOICECOMMAND
KEY_VOICEMAIL
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_W
KEY_WAKEUP
KEY_WLAN
KEY_WORDPROCESSOR
KEY_WPS_BUTTON
KEY_WWAN
KEY_WWW
KEY_X
KEY_XFER
KEY_Y
KEY_YELLOW
KEY_YEN
KEY_Z
KEY_ZENKAKUHANKAKU
KEY_ZOOM
KEY_ZOOMIN
KEY_ZOOMOUT
KEY_ZOOMRESET
BTN_0
BTN_1
BTN_2
BTN_3
BTN_4
BTN_5
BTN_6
BTN_7
BTN_8
BTN_9
BTN_BACK
BTN_BASE
BTN_BASE2
BTN_BASE3
BTN_BASE4
BTN_BASE5
BTN_BASE6
BTN_C
BTN_DEAD
BTN_DIGI
BTN_DPAD_DOWN
BTN_DPAD_LEFT
BTN_DPAD_RIGHT
BTN_DPAD_UP
BTN_EAST
BTN_EXTRA
BTN_FORWARD
BTN_GAMEPAD
BTN_GEAR_DOWN
BTN_GEAR_UP
BTN_JOYSTICK
BTN_LEFT
BTN_MIDDLE
BTN_MISC
BTN_MODE
BTN_MOUSE
BTN_NORTH
BTN_PINKIE
BTN_RIGHT
BTN_SELECT
BTN_SIDE
BTN_SOUTH
BTN_START
BTN_STYLUS
BTN_STYLUS2
BTN_TASK
BTN_THUMB
BTN_THUMB2
BTN_THUMBL
BTN_THUMBR
BTN_TL
BTN_TL2
BTN_TOOL_AIRBRUSH
BTN_TOOL_BRUSH
BTN_TOOL_DOUBLETAP
BTN_TOOL_FINGER
BTN_TOOL_LENS
BTN_TOOL_MOUSE
BTN_TOOL_PEN
BTN_TOOL_PENCIL
BTN_TOOL_QUADTAP
BTN_TOOL_QUINTTAP
BTN_TOOL_RUBBER
BTN_TOOL_TRIPLETAP
BTN_TOP
BTN_TOP2
BTN_TOUCH
BTN_TR
BTN_TR2
BTN_TRIGGER
BTN_TRIGGER_HAPPY
BTN_TRIGGER_HAPPY10
BTN_TRIGGER_HAPPY1
BTN_TRIGGER_HAPPY11
BTN_TRIGGER_HAPPY12
BTN_TRIGGER_HAPPY13
BTN_TRIGGER_HAPPY14
BTN_TRIGGER_HAPPY15
BTN_TRIGGER_HAPPY16
BTN_TRIGGER_HAPPY17
BTN_TRIGGER_HAPPY18
BTN_TRIGGER_HAPPY19
BTN_TRIGGER_HAPPY20
BTN_TRIGGER_HAPPY2
BTN_TRIGGER_HAPPY21
BTN_TRIGGER_HAPPY22
BTN_TRIGGER_HAPPY23
BTN_TRIGGER_HAPPY24
BTN_TRIGGER_HAPPY25
BTN_TRIGGER_HAPPY26
BTN_TRIGGER_HAPPY27
BTN_TRIGGER_HAPPY28
BTN_TRIGGER_HAPPY29
BTN_TRIGGER_HAPPY30
BTN_TRIGGER_HAPPY3
BTN_TRIGGER_HAPPY31
BTN_TRIGGER_HAPPY32
BTN_TRIGGER_HAPPY33
BTN_TRIGGER_HAPPY34
BTN_TRIGGER_HAPPY35
BTN_TRIGGER_HAPPY36
BTN_TRIGGER_HAPPY37
BTN_TRIGGER_HAPPY38
BTN_TRIGGER_HAPPY39
BTN_TRIGGER_HAPPY40
BTN_TRIGGER_HAPPY4
BTN_TRIGGER_HAPPY5
BTN_TRIGGER_HAPPY6
BTN_TRIGGER_HAPPY7
BTN_TRIGGER_HAPPY8
BTN_TRIGGER_HAPPY9
BTN_WEST
BTN_WHEEL
BTN_Z

nell' esempio gli ultimi tre codici non esistono e non vengono riconosciuti, occorrera' quindi adattarsi all'uso di codici diversi.

Installazione file di configurazione


# display the existing table
ir-keytable --read
# delete the existing table
ir-keytable -c

# load the new table from local file
sudo ir-keytable -c -p sony -w ./robophilo.txt

# check if the table is really there
pi@rpi-iw0hdv:~ $ ir-keytable -r
scancode 0x1f0026 = KEY_1 (0x02)
scancode 0x1f0027 = KEY_2 (0x03)
scancode 0x1f0028 = KEY_3 (0x04)
scancode 0x1f0029 = KEY_4 (0x05)
scancode 0x1f002a = KEY_5 (0x06)
scancode 0x1f002b = KEY_6 (0x07)
scancode 0x1f002c = KEY_7 (0x08)
scancode 0x1f002d = KEY_8 (0x09)
scancode 0x1f002e = KEY_9 (0x0a)
scancode 0x1f0030 = KEY_0 (0x0b)
Enabled protocols: lirc sony 

# test  the file
sudo ir-keytable -v -t -p sony
Found device /sys/class/rc/rc0/
Input sysfs node is /sys/class/rc/rc0/input0/
Event sysfs node is /sys/class/rc/rc0/input0/event0/
Parsing uevent /sys/class/rc/rc0/input0/event0/uevent
/sys/class/rc/rc0/input0/event0/uevent uevent MAJOR=13
/sys/class/rc/rc0/input0/event0/uevent uevent MINOR=64
/sys/class/rc/rc0/input0/event0/uevent uevent DEVNAME=input/event0
Parsing uevent /sys/class/rc/rc0/uevent
/sys/class/rc/rc0/uevent uevent NAME=rc-rc6-mce
/sys/class/rc/rc0/uevent uevent DRV_NAME=gpio-rc-recv
input device is /dev/input/event0
/sys/class/rc/rc0/protocols protocol other (disabled)
/sys/class/rc/rc0/protocols protocol unknown (disabled)
/sys/class/rc/rc0/protocols protocol rc-5 (disabled)
/sys/class/rc/rc0/protocols protocol nec (disabled)
/sys/class/rc/rc0/protocols protocol rc-6 (disabled)
/sys/class/rc/rc0/protocols protocol jvc (disabled)
/sys/class/rc/rc0/protocols protocol sony (enabled)
/sys/class/rc/rc0/protocols protocol rc-5-sz (disabled)
/sys/class/rc/rc0/protocols protocol sanyo (disabled)
/sys/class/rc/rc0/protocols protocol sharp (disabled)
/sys/class/rc/rc0/protocols protocol mce_kbd (disabled)
/sys/class/rc/rc0/protocols protocol xmp (disabled)
/sys/class/rc/rc0/protocols protocol cec (disabled)
/sys/class/rc/rc0/protocols protocol lirc (enabled)
Opening /dev/input/event0
Input Protocol version: 0x00010001
Protocols changed to sony 
Testing events. Please, press CTRL-C to abort.

1508275306.220144: event type EV_MSC(0x04): scancode = 0x1f0026
1508275306.220144: event type EV_KEY(0x01) key_down: KEY_1(0x0002)
1508275306.220144: event type EV_SYN(0x00).
1508275306.265670: event type EV_MSC(0x04): scancode = 0x1f0026
1508275306.265670: event type EV_SYN(0x00).
1508275306.311174: event type EV_MSC(0x04): scancode = 0x1f0026
1508275306.311174: event type EV_SYN(0x00).
1508275306.462677: event type EV_MSC(0x04): scancode = 0x1f0026
1508275306.462677: event type EV_SYN(0x00).
1508275306.722653: event type EV_KEY(0x01) key_down: KEY_1(0x0002)
1508275306.722653: event type EV_SYN(0x00).
1508275306.722675: event type EV_KEY(0x01) key_up: KEY_1(0x0002)
1508275306.722675: event type EV_SYN(0x00).
1508275306.752903: event type EV_MSC(0x04): scancode = 0x1f002a
1508275306.752903: event type EV_KEY(0x01) key_down: KEY_5(0x0006)
1508275306.752903: event type EV_SYN(0x00).
1508275306.798392: event type EV_MSC(0x04): scancode = 0x1f002a
1508275306.798392: event type EV_SYN(0x00).
1508275306.843903: event type EV_MSC(0x04): scancode = 0x1f002a
1508275306.843903: event type EV_SYN(0x00).
1508275306.992695: event type EV_MSC(0x04): scancode = 0x1f002a
1508275306.992695: event type EV_SYN(0x00).
1508275307.252653: event type EV_KEY(0x01) key_up: KEY_5(0x0006)
1508275307.252653: event type EV_SYN(0x00).
1508275307.363014: event type EV_MSC(0x04): scancode = 0x1f002b
1508275307.363014: event type EV_KEY(0x01) key_down: KEY_6(0x0007)
1508275307.363014: event type EV_SYN(0x00).
1508275307.408518: event type EV_MSC(0x04): scancode = 0x1f002b
1508275307.408518: event type EV_SYN(0x00).
1508275307.552700: event type EV_MSC(0x04): scancode = 0x1f002b
1508275307.552700: event type EV_SYN(0x00).
1508275307.812654: event type EV_KEY(0x01) key_up: KEY_6(0x0007)
1508275307.812654: event type EV_SYN(0x00).

Link sull'argomento:

Andrea Montefusco
Currently employed as network architect, always Internet working man, real C/C++ programmer in the past, network and Unix system engineer as needed, HAM Radio enthusiast (former IW0RDI, now IW0HDV), aeromodeller (a person who builds and flies model airplanes) since 1976 (ex FAI10655).
http://www.montefusco.com - https://github.com/amontefusco - https://github.com/IW0HDV - andrew@montefusco.com