2016-08-11 1 views
2

Dans ma recherche d'une solution pour désactiver le clavier sur mon Macbook, je suis actuellement aux prises avec Launchd.Désactiver le clavier d'un Macbook

Un peu de contexte: j'ai renversé de l'eau sur mon modèle Macbook Pro 2010 et depuis, certaines touches du clavier ne fonctionnent plus. J'ai commencé à utiliser le Mac comme un ordinateur de bureau avec un clavier, une souris et un moniteur externes et je me suis bien débrouillé pendant un moment. Mais ça a empiré avec la touche Majuscule qui est bloquée (pas la clé elle-même mais quelque part sur la carte mère je suppose). Le décalage force le Mac à démarrer en mode sans échec. J'ai contourné ceci en appuyant sur la touche Option pendant le démarrage. Mais maintenant, il y a quelque chose de nouveau: certaines touches sont déclenchées au hasard si l'ordinateur est inutilisable ... Je suis arrivé à ce problème en utilisant un sans mot de passe de connexion, et en exécutant cette commande shell:

sudo kextunload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/ 

Je mets cette commande dans un script appelé disable-keyboard.sh. Cela fonctionne très bien! Le clavier interne est éteint et le clavier externe fonctionne bien. Cependant, l'exécution de cette commande est très pénible avec les touches déclenchées au hasard, ce qui rend difficile le chargement d'un terminal. J'ai donc besoin d'exécuter cette commande au démarrage. Je suis entré dans Launchd:

J'ai fait un fichier de liste de propriétés:

more /Users/<username>/Library/LaunchAgents/DisableKeyboard.plist 

<xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>DisableKeyboard</string> 
    <key>Program</key> 
    <string>/Users/<username>/disable-keyboard.sh</string> 
    <key>RunAtLoad</key> 
    <true/> 
</dict> 
</plist> 

Et il semble fonctionner:

launchctl load /Users/<username>/Library/LaunchAgents/DisableKeyboard.plist 

retours

Users/<username>/Library/LaunchAgents/DisableKeyboard.plist: service already loaded 

Cependant: launchctl start DisableKeyboard donne cette message d'erreur dans

system.log: 


com.apple.xpc.launchd[1] (DisableKeyboard[292]): Program specified by service is not a Mach-O executable file. 

Qu'est-ce qui ne va pas?

+1

La solution: Le script qui est exécuté par Launchd doit commencer par la ligne "#!/Bin/bash" –

+0

Ce totalement résolu mon problème, merci toi. Faire la queue sur les journaux du système m'a aidé à identifier ce qui ne va pas: tail -f /var/log/system.log – martinedwards

+1

C'est génial d'entendre Martin! –

Répondre

2

Le script correct à /Users/<username>/disable-keyboard.sh est:

#!/bin/bash 
sudo kextunload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/