{"id":1492,"date":"2014-10-06T12:18:22","date_gmt":"2014-10-06T10:18:22","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=1492"},"modified":"2014-10-06T12:18:22","modified_gmt":"2014-10-06T10:18:22","slug":"mapear-los-botones-de-un-raton-logitech","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=1492","title":{"rendered":"Mapear los botones de un rat\u00f3n logitech"},"content":{"rendered":"<p>Desde hace tiempo tengo un <a href=\"http:\/\/www.logitech.com\/es-es\/product\/performance-mouse-mx\" target=\"_blank\">rat\u00f3n Performance MX de Logitech<\/a>. Estoy muy contento con \u00e9l desde que lo compr\u00e9, salvo por el detalle de que usar la rueda como bot\u00f3n central es bastante inc\u00f3modo, porque es dif\u00edcil no girarla al pulsarla. Por eso lo primero que hice fue mapear la tecla <em>zoom<\/em> (que est\u00e1 disponible en el pulgar) como el bot\u00f3n central. Para ello hice este peque\u00f1o <em>script bash<\/em>, que a\u00f1ad\u00ed a las aplicaciones al inicio de mi sesi\u00f3n:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">#!\/bin\/bash\n\nxmodmap -e \"pointer = 1 13 3 4 5 6 7 8 9 10 11 12 2\"<\/pre>\n<\/div>\n<p>Al principio este <em>script<\/em> funcionaba perfectamente, hasta que un d\u00eda, dej\u00f3 de hacerlo. Lo raro era que si lo ejecutaba a mano desde un terminal, funcionaba perfectamente; s\u00f3lo fallaba si lo ejecutaba como aplicaci\u00f3n al inicio de sesi\u00f3n. Esto me obligaba a ejecutarlo manualmente cada vez que encend\u00eda el ordenador, lo que era un pe\u00f1azo, as\u00ed que empec\u00e9 a investigar qu\u00e9 era lo que ocurr\u00eda, y descubr\u00ed que el rat\u00f3n, como dispositivo de entrada, no es visible por el ordenador hasta que se mueve por primera vez. Eso significa que, cuando se ejecutaba el <em>script<\/em> al principio de la sesi\u00f3n, como para el ordenador a\u00fan no hab\u00eda ning\u00fan rat\u00f3n, no hac\u00eda nada; pero cuando lo ejecutaba a mano, como ya lo hab\u00eda movido para lanzar el terminal, \u00e9ste ya aparec\u00eda en la lista de dispositivos, y por eso funcionaba.<\/p>\n<p>La soluci\u00f3n final consisti\u00f3 en modificar el <em>script<\/em> para que, al lanzarse, compruebe regularmente si hay un dispositivo Logitech, y s\u00f3lo entonces ejecute el comando <em>xmodmap<\/em>. El <em>script<\/em> final qued\u00f3 as\u00ed:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">#!\/bin\/bash\n\nx=1\n\nwhile [ $x -ne 0 ]\ndo\n\tsleep 1\n\txinput --list | grep Logitech\n\tx=$?\ndone\n\nxmodmap -e \"pointer = 1 13 3 4 5 6 7 8 9 10 11 12 2\"<\/pre>\n<\/div>\n<p>Dado que sabemos que tiene que haber un rat\u00f3n Logitech (si no, no meter\u00edamos este script), comprobamos una vez por segundo si en la lista de dispositivos de entrada aparece el receptor (esa pausa permite no consumir recursos in\u00fatilmente mientras esperamos a que aparezca). En el momento en que se cumpla sabemos que el comando <em>xmodmap<\/em> va a funcionar, as\u00ed que lo ejecutamos y salimos del <em>script<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde hace tiempo tengo un rat\u00f3n Performance MX de Logitech. Estoy muy contento con \u00e9l desde que lo compr\u00e9, salvo por el detalle de que usar la rueda como bot\u00f3n central es bastante inc\u00f3modo, porque es dif\u00edcil no girarla al pulsarla. Por eso lo primero que hice fue mapear la tecla zoom (que est\u00e1 disponible &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=1492\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Mapear los botones de un rat\u00f3n logitech<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-1492","post","type-post","status-publish","format-standard","hentry","category-trucos"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1492"}],"version-history":[{"count":0,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1492\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}