2009-05-08 10 views
10

Beim Lesen entweder thesequestions oder die EmacsWiki article über Mapping Caps Lock zu Control in Emacs in Windows, scheinen die besten Antworten die Registrierung betreffen. Meine Frage ist, was ein Benutzer tun kann, wenn sie die Registrierung der Maschine nicht ändern können, weil sie keine Administratorrechte haben. Gibt es eine Möglichkeit, das Mapping innerhalb von Emacs durchzuführen? This article kommt oh-so-schließen, sogar sagen, "Wie die Leute erwähnt haben, können Sie Caps-Lock natürlich anderen Schlüsseln zuordnen, zum Beispiel der Control-Taste." Aber ich kann nicht herausfinden, wie die Steuertaste darzustellen (mit various references das ziemlich umfassend aussehen, aber vielleicht nicht für Windows-zentriert sein), versuche, Dinge wieMapping Caps zum Steuern von innerhalb Emacs unter Windows

(setq w32-enable-caps-lock nil) 
(global-set-key [capslock] '[control]) 

und

(setq w32-enable-caps-lock nil) 
(global-set-key [capslock] 'ctl-x-map) 

des don‘ Es scheint zu funktionieren.

Antwort

8

Ich weiß, dass dies Ihre Frage nicht wirklich beantwortet, aber Trey Jackson erklärte das Problem im Grunde. Um den Steuerschlüssel allein zu erkennen, ist ein Low-Level-Tastatur-Hook unter Windows erforderlich, den Emacs nicht implementiert.

Eine Möglichkeit (mit externem Programm, aber ohne Administratorrechte) ist AutoHotkey zu verwenden. Alles, was Sie ist die folgende 2-zeiliges Skript benötigen:

CapsLock::Ctrl 
LCtrl::Capslock 

Sie müssen dieses Skript ausgeführt werden soll, wenn Emacs geöffnet ist, aber zum Glück Autohotkey ist ziemlich Low-Profile-Anwendung (in der Regel nur in der Erinnerung ein paar hundert Kb dauert). Sie können dieses Skript beispielsweise in Ihren .emacs ausführen, so dass Ihr Steuerschlüssel und Ihre Capslock-Taste bei jedem Öffnen von emacs vertauscht werden.

+0

Gut gemacht, dass ich von meiner angenommenen Lösung zurückgehe und einen anderen Weg finde. Ich habe AutoHotKey sehr kurz angeschaut und angenommen, dass es Admin-Rechte erfordern würde, aber es sieht so aus, als würde es funktionieren. Ich werde die Frage bearbeiten und einige relevante Links hinzufügen. –

+0

Korrigieren Sie mich, wenn ich falsch liege, aber die Schreibweise in der zweiten Zeile Ihres Skriptbeispiels sollte "LCtrl :: CapsLock" statt "LCtrl :: Cpaslock" lauten –

+0

Ja, natürlich haben Sie Recht. Fest. – polyglot

6

Ich glaube es nicht funktioniert, weil Windows (oder X) nicht ein tatsächliches Ereignis für [capslock] oder [control] passieren - es ist eine Sondertaste, wie [shift]. Das Drücken einer Modifikatortaste führt nicht dazu, dass die Anwendung einen Tastendruck erhält, aber wenn Sie einen Modifikator und eine zweite (Nicht-Modifikator-) Taste drücken, erhalten Sie den Tastendruck.

Zum Beispiel [a] und [A] sind zwei verschiedene Schlüssel, einer ist der regelmäßige "a" und der andere ist im Wesentlichen "shift-a". Ich bin mir sicher, dass Sie Windows so einstellen könnten, dass das "shift-a" tatsächlich ein "z" oder so sendet.

Da [capslock], [control], [shift], [meta] sind alle Zusatztasten, sie erzeugen keine Schlüsselereignisse an und für sich für die Anwendungen.

Kurz gesagt, Emacs bekommt kein [control] Schlüsselereignis, das es neu zuordnen kann, es erhält ein C-a Ereignis. Dies geschieht im Allgemeinen durch die offensichtliche Kombination von [control] und [a] Schlüsseln. Aber das Ereignis könnte durch einen anderen Tastendruck erzeugt werden, sagen wir [F10] oder sogar [y] (verwirrend, ja).

So verstehe ich es. Klarstellungen sind natürlich willkommen.

+0

Ja, das ist der Sinn, den ich bekommen habe, aber danke, dass du es viel besser artikuliert hast, als ich es könnte. –

1

Der einfachste Weg, um CapsLock unter Windows neu zu mappen ist, dieses CapsLockChanger Dienstprogramm herunterzuladen, einen Schlüssel zu wählen, um (Kontrolle) zuzuordnen und ihn in Ihrem Start-> Startmenü zu setzen.

Es bleibt in Ihrem Fach, macht die Arbeit bei der Schlüssel-Neuzuordnung und erfordert keine Unordnung mit der Registrierung.

0

Sie benötigen nicht unbedingt Administratorrechte, um die Registrierung zu ändern.
In der Tat ist die Windows-Registrierung eine segmentierte Ressource, ähnlich wie ein Dateisystem, und Sie können detaillierte Berechtigungen für verschiedene Zweige und Knoten in der Registrierung haben. Sind Sie sicher, dass Ihre Annahme, dass Sie die Registrierung nicht ändern können, korrekt ist? Ich denke, es ist standardmäßig auf Vista, aber nicht auf vorherigen Windows.

+0

Die übliche Methode der Schlüsselzuordnung ist sehr niedrig und pro Maschine (Änderungen gehen irgendwo in HKLM \ SYSTEM), so dass Admin-Rechte ein Muss sind. –

Verwandte Themen