{"id":703,"date":"2020-05-13T09:00:40","date_gmt":"2020-05-13T07:00:40","guid":{"rendered":"http:\/\/programaraciegas.net\/?p=703"},"modified":"2020-05-11T19:49:18","modified_gmt":"2020-05-11T17:49:18","slug":"como-cambiar-el-funcionamiento-de-las-teclas-en-un-teclado-de-mac-sin-instalar-ninguna-aplicacion","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=703","title":{"rendered":"C\u00f3mo cambiar el funcionamiento de las teclas en un teclado de Mac sin instalar ninguna aplicaci\u00f3n"},"content":{"rendered":"<p>A veces necesitamos que una tecla f\u00edsica de nuestro ordenador Mac funcione como otra tecla. Esto suele ser habitual cuando utilizamos aplicaciones de virtualizaci\u00f3n o emulaci\u00f3n de otros sistemas operativos o cuando nuestro teclado tiene problemas f\u00edsicos. Aunque existen algunas aplicaciones para remapear el teclado en Mac estas aplicaciones pueden que no sean confiables o accesibles. Una de las bondades de MacOS es la posibilidad de realizar una operaci\u00f3n de muy diversas formas, podemos hacer esto gracias a comandos de la <strong>Terminal<\/strong> de nuestro equipo Apple sin necesidad de instalar ninguna otra aplicaci\u00f3n.<\/p>\n<p><!--more--><\/p>\n<h2>El comando hidutil<\/h2>\n<p>El comando <strong>hidutil<\/strong> nos permite, entre otras cosas, remapear las teclas f\u00edsicas asignando la funci\u00f3n de otra tecla.<\/p>\n<p>Para realizar estos cambios el comando hidutil reescribe valores de un diccionario indicando el nuevo valor para una clave determinada.<\/p>\n<p>Se debe utilizar desde la Terminal de Mac y su sintaxis no es demasiado compleja.<\/p>\n<pre><code>\r\nhidutil property --set '{\"Nombre del diccionario a modificar\":\r\n    [{\"nombre de la clave origen\":Valor del elemento,\r\n      \"Clave a modificar\":Nuevo valor}]\r\n}'\r\n<\/code><\/pre>\n<h3>Comprobando si ya tenemos alguna tecla remapeada<\/h3>\n<p>El propio comando hidutil nos permite saber qu\u00e9 asignaciones o remapeados se han realizado. Si en la Terminal escribimos el siguiente comando y no se nos devuelve <em>NULL<\/em> se nos listar\u00e1n los distintos cambios realizados con este comando:<\/p>\n<p><code><br \/>\nhidutil property --get \"UserKeyMapping\"<br \/>\n<\/code><\/p>\n<h3>Cambiando nuestro teclado<\/h3>\n<p>El nombre del diccionario que debemos modificar es <strong>UserKeyMapping<\/strong><\/p>\n<p>Hay que tener en cuenta que el valor para la clave <em>HIDKeyboardModifierMappingSrc<\/em> debe ser el de la tecla de origen o tecla que vamos a cambiar y el la clave para la tecla con la que sustituiremos la tecla de origen es <em>HIDKeyboardModifierMappingDstKey<\/em><\/p>\n<p>El comando ser\u00eda algo como:<\/p>\n<pre><code>\r\nhidutil property --set '{\"UserKeyMapping\":\r\n    [{\"HIDKeyboardModifierMappingSrc\":id de la tecla a cambiar,\r\n      \"HIDKeyboardModifierMappingDst\":id de la tecla final}]\r\n}'\r\n<\/code><\/pre>\n<p>Por ejemplo, si quisiesemos remapear la tecla de bloqueo de may\u00fasculas (<em>Caps lock<\/em>) deber\u00edamos utilizar el id <strong>0x39<strong> y sustituirlo por la tecla <em>Insert<\/eM> cuyo c\u00f3digo es <strong>0x49<\/strong> quedando nuestro ejemplo de la siguiente forma:<\/p>\n<pre><code>\r\nhidutil property --set '{\"UserKeyMapping\":\r\n    [{\"HIDKeyboardModifierMappingSrc\":0x700000039,\r\n      \"HIDKeyboardModifierMappingDst\":0x700000049}]\r\n}'\r\n<\/code><\/pre>\n<p>Con este cambio ya no tendr\u00edamos que utilizar los men\u00fas de remapeo de aplicaciones de virtualizaci\u00f3n como VirtualBox o VMWare que resultan poco accesibles y podr\u00edamos virtualizar un sistema operativo Windows o Linux con la tecla Insert en lugar de la tecla de bloqueo de may\u00fasculas dejando libre acceso al teclado habitual de lectores de pantallas.<\/p>\n<h2>Problemas con el comando hidutil<\/h2>\n<p>El problema con el uso del comando <strong>hidutil<\/strong> es que el cambio no es permanente. Si reiniciamos o apagamos nuestro equipo Mac deberemos realizar el remapeo de nuevo al volver a encender nuestro equipo.<\/p>\n<p>Una forma de solucionarlo es crearnos un script de AppleScript que ejecute de forma r\u00e1pida el comando de Terminal para activar el remapeo deseado.<\/p>\n<h2>Tabla de valores<\/h2>\n<p>A continuaci\u00f3n est\u00e1 el listado de teclas con sus correspondientes valores ID.<\/p>\n<table>\n<tr>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nTecla\n<\/th>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nId (hex)\n<\/th>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nTecla\n<\/th>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nId (hex)\n<\/th>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nTecla\n<\/th>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nId (hex)\n<\/th>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nTecla\n<\/th>\n<th scope=\"col\" class=\"TableHeading_TableRow_TableCell\">\nId (hex)\n<\/th>\n<\/tr>\n<tr>\n<td  scope=\"row\">\na \/ A\n<\/td>\n<td >\n0x04\n<\/td>\n<td >\n5 \/ %\n<\/td>\n<td >\n0x22\n<\/td>\n<td >\nF7\n<\/td>\n<td >\n0x40\n<\/td>\n<td >\nKeypad 6 \/ Right Arrow\n<\/td>\n<td >\n0x5E\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nb \/ B\n<\/td>\n<td >\n0x05\n<\/td>\n<td >\n6 \/ ^\n<\/td>\n<td >\n0x23\n<\/td>\n<td >\nF8\n<\/td>\n<td >\n0x41\n<\/td>\n<td >\nKeypad 7 \/ Home\n<\/td>\n<td >\n0x5F\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nc \/ C\n<\/td>\n<td >\n0x06\n<\/td>\n<td >\n7 \/ &amp;\n<\/td>\n<td >\n0x24\n<\/td>\n<td >\nF9\n<\/td>\n<td >\n0x42\n<\/td>\n<td >\nKeypad 8 \/ Up Arrow\n<\/td>\n<td >\n0x60\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nd \/ D\n<\/td>\n<td >\n0x07\n<\/td>\n<td >\n8 \/ *\n<\/td>\n<td >\n0x25\n<\/td>\n<td >\nF10\n<\/td>\n<td >\n0x43\n<\/td>\n<td >\nKeypad 9 \/ Page Up\n<\/td>\n<td >\n0x61\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\ne \/ E\n<\/td>\n<td >\n0x08\n<\/td>\n<td >\n9 \/ (\n<\/td>\n<td >\n0x26\n<\/td>\n<td >\nF11\n<\/td>\n<td >\n0x44\n<\/td>\n<td >\nKeypad 0 \/ Insert\n<\/td>\n<td >\n0x62\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nf \/ F\n<\/td>\n<td >\n0x09\n<\/td>\n<td >\n0 \/ )\n<\/td>\n<td >\n0x27\n<\/td>\n<td >\nF12\n<\/td>\n<td >\n0x45\n<\/td>\n<td >\nKeypad . \/ Delete\n<\/td>\n<td >\n0x63\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\ng \/ G\n<\/td>\n<td >\n0x0A\n<\/td>\n<td >\nReturn (Enter)\n<\/td>\n<td >\n0x28\n<\/td>\n<td >\nPrint Screen\n<\/td>\n<td >\n0x46\n<\/td>\n<td >\nNon-US \\ \/ |\n<\/td>\n<td >\n0x64\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nh \/ H\n<\/td>\n<td >\n0x0B\n<\/td>\n<td >\nEscape\n<\/td>\n<td >\n0x29\n<\/td>\n<td >\nScroll Lock\n<\/td>\n<td >\n0x47\n<\/td>\n<td >\nApplication\n<\/td>\n<td >\n0x65\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\ni \/ I\n<\/td>\n<td >\n0x0C\n<\/td>\n<td >\nDelete (Backspace)\n<\/td>\n<td >\n0x2A\n<\/td>\n<td >\nPause\n<\/td>\n<td >\n0x48\n<\/td>\n<td >\nPower\n<\/td>\n<td >\n0x66\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nj \/ J\n<\/td>\n<td >\n0x0D\n<\/td>\n<td >\nTab\n<\/td>\n<td >\n0x2B\n<\/td>\n<td >\nInsert\n<\/td>\n<td >\n0x49\n<\/td>\n<td >\nKeypad =\n<\/td>\n<td >\n0x67\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nk \/ K\n<\/td>\n<td >\n0x0E\n<\/td>\n<td >\nSpacebar\n<\/td>\n<td >\n0x2C\n<\/td>\n<td >\nHome\n<\/td>\n<td >\n0x4A\n<\/td>\n<td >\nF13\n<\/td>\n<td >\n0x68\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nl \/ L\n<\/td>\n<td >\n0x0F\n<\/td>\n<td >\n&#8211; \/ _\n<\/td>\n<td >\n0x2D\n<\/td>\n<td >\nPage Up\n<\/td>\n<td >\n0x4B\n<\/td>\n<td >\nF14\n<\/td>\n<td >\n0x69\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nm \/ M\n<\/td>\n<td >\n0x10\n<\/td>\n<td >\n= \/ +\n<\/td>\n<td >\n0x2E\n<\/td>\n<td >\nDelete Forward\n<\/td>\n<td >\n0x4C\n<\/td>\n<td >\nF15\n<\/td>\n<td >\n0x6A\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nn \/ N\n<\/td>\n<td >\n0x11\n<\/td>\n<td >\n[ \/ {\n<\/td>\n<td >\n0x2F\n<\/td>\n<td >\nEnd\n<\/td>\n<td >\n0x4D\n<\/td>\n<td >\nF16\n<\/td>\n<td >\n0x6B\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\no \/ O\n<\/td>\n<td >\n0x12\n<\/td>\n<td >\n] \/ }\n<\/td>\n<td >\n0x30\n<\/td>\n<td >\nPage Down\n<\/td>\n<td >\n0x4E\n<\/td>\n<td >\nF17\n<\/td>\n<td >\n0x6C\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\np \/ P\n<\/td>\n<td >\n0x13\n<\/td>\n<td >\n\\ \/ |\n<\/td>\n<td >\n0x31\n<\/td>\n<td >\nRight Arrow\n<\/td>\n<td >\n0x4F\n<\/td>\n<td >\nF18\n<\/td>\n<td >\n0x6D\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nq \/ Q\n<\/td>\n<td >\n0x14\n<\/td>\n<td >\nNon-US # \/ ~\n<\/td>\n<td >\n0x32\n<\/td>\n<td >\nLeft Arrow\n<\/td>\n<td >\n0x50\n<\/td>\n<td >\nF19\n<\/td>\n<td >\n0x6E\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nr \/ R\n<\/td>\n<td >\n0x15\n<\/td>\n<td >\n; \/ :\n<\/td>\n<td >\n0x33\n<\/td>\n<td >\nDown Arrow\n<\/td>\n<td >\n0x51\n<\/td>\n<td >\nF20\n<\/td>\n<td >\n0x6F\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\ns \/ S\n<\/td>\n<td >\n0x16\n<\/td>\n<td >\n&#8216; \/ \u00bb\n<\/td>\n<td >\n0x34\n<\/td>\n<td >\nUp Arrow\n<\/td>\n<td >\n0x52\n<\/td>\n<td >\nF21\n<\/td>\n<td >\n0x70\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nt \/ T\n<\/td>\n<td >\n0x17\n<\/td>\n<td >\nGrave Accent \/ Tilde\n<\/td>\n<td >\n0x35\n<\/td>\n<td >\nKeypad Num Lock \/ Clear\n<\/td>\n<td >\n0x53\n<\/td>\n<td >\nF22\n<\/td>\n<td >\n0x71\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nu \/ U\n<\/td>\n<td >\n0x18\n<\/td>\n<td >\n, \/ \u00ab&lt;\u00bb\n<\/td>\n<td >\n0x36\n<\/td>\n<td >\nKeypad \/\n<\/td>\n<td >\n0x54\n<\/td>\n<td >\nF23\n<\/td>\n<td >\n0x72\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nv \/ V\n<\/td>\n<td >\n0x19\n<\/td>\n<td >\n. \/ \u00ab&gt;\u00bb\n<\/td>\n<td >\n0x37\n<\/td>\n<td >\nKeypad *\n<\/td>\n<td >\n0x55\n<\/td>\n<td >\nF24\n<\/td>\n<td >\n0x73\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nw \/ W\n<\/td>\n<td >\n0x1A\n<\/td>\n<td >\n\/ \/ ?\n<\/td>\n<td >\n0x38\n<\/td>\n<td >\nKeypad &#8211;\n<\/td>\n<td >\n0x56\n<\/td>\n<td >\nLeft Control\n<\/td>\n<td >\n0xE0\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nx \/ X\n<\/td>\n<td >\n0x1B\n<\/td>\n<td >\nCaps Lock\n<\/td>\n<td >\n0x39\n<\/td>\n<td >\nKeypad +\n<\/td>\n<td >\n0x57\n<\/td>\n<td >\nLeft Shift\n<\/td>\n<td >\n0xE1\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\ny \/ Y\n<\/td>\n<td >\n0x1C\n<\/td>\n<td >\nF1\n<\/td>\n<td >\n0x3A\n<\/td>\n<td >\nKeypad Enter\n<\/td>\n<td >\n0x58\n<\/td>\n<td >\nLeft Alt\n<\/td>\n<td >\n0xE2\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\nz \/ Z\n<\/td>\n<td >\n0x1D\n<\/td>\n<td >\nF2\n<\/td>\n<td >\n0x3B\n<\/td>\n<td >\nKeypad 1 \/ End\n<\/td>\n<td >\n0x59\n<\/td>\n<td >\nLeft GUI\n<\/td>\n<td >\n0xE3\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\n1 \/ !\n<\/td>\n<td >\n0x1E\n<\/td>\n<td >\nF3\n<\/td>\n<td >\n0x3C\n<\/td>\n<td >\nKeypad 2 \/ Down Arrow\n<\/td>\n<td >\n0x5A\n<\/td>\n<td >\nRight Control\n<\/td>\n<td >\n0xE4\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\n2 \/ @\n<\/td>\n<td >\n0x1F\n<\/td>\n<td >\nF4\n<\/td>\n<td >\n0x3D\n<\/td>\n<td >\nKeypad 3 \/ Page Down\n<\/td>\n<td >\n0x5B\n<\/td>\n<td >\nRight Shift\n<\/td>\n<td >\n0xE5\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\n3 \/ #\n<\/td>\n<td >\n0x20\n<\/td>\n<td >\nF5\n<\/td>\n<td >\n0x3E\n<\/td>\n<td >\nKeypad 4 \/ Left Arrow\n<\/td>\n<td >\n0x5C\n<\/td>\n<td >\nRight Alt\n<\/td>\n<td >\n0xE6\n<\/td>\n<\/tr>\n<tr>\n<td  scope=\"row\">\n4 \/ $\n<\/td>\n<td >\n0x21\n<\/td>\n<td >\nF6\n<\/td>\n<td >\n0x3F\n<\/td>\n<td >\nKeypad 5\n<\/td>\n<td >\n0x5D\n<\/td>\n<td >\nRight GUI\n<\/td>\n<td >\n0xE7\n<\/td>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>A veces necesitamos que una tecla f\u00edsica de nuestro ordenador Mac funcione como otra tecla. Esto suele ser habitual cuando utilizamos aplicaciones de virtualizaci\u00f3n o emulaci\u00f3n de otros sistemas operativos o cuando nuestro teclado tiene problemas f\u00edsicos. Aunque existen algunas aplicaciones para remapear el teclado en Mac estas aplicaciones pueden que no sean confiables o &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=703\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abC\u00f3mo cambiar el funcionamiento de las teclas en un teclado de Mac sin instalar ninguna aplicaci\u00f3n\u00bb<\/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":[7,37,38],"tags":[348,349,51,255,47,45,46],"class_list":["post-703","post","type-post","status-publish","format-standard","hentry","category-herramientas-de-asistencia","category-herramientas-software","category-macos-x","tag-hidutil","tag-remapeo","tag-teclado","tag-terminal","tag-virtualbox","tag-virtualizacion","tag-vmware"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=703"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/703\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}