맥북 카라비너 영어/한글/일본어 전환하기

이미지
 현재 Intel 맥북과 M1 맥북에서 4종류의 키보드를 사용중이다. HHK RealForce MD770 Keychron K12 마음 가는대로 키보드를 바꿔가며 사용중인데 매번 설정을 바꾸는게 고역이다. 특히 한글/영어/일본어 간의 변환은 스무즈하게 바꿀 수 없다면 타이핑 하는데 꽤나 고역이다. 그래서 카라비너를 이용한 변환키 설정을 기록한다. 기본 컨셉은 일본어 배열 키보드와 영어 배열 키보드에서 간단하게 각 언어 변환이 가능할 것. 일본어 키보드의 경우는 스페이스바 왼쪽의 키를 한번 누르면 영어, 스페이스바 오른쪽의 키를 누르면 일본어, 연속으로 두번 누르면 한글로 바뀌는 설정이고, 영어 배열 키보드에서는 왼쪽쉬프트+스페이스바가 영어, 오른쪽쉬프트+스페이스가 일본어, 오른쪽 커맨드키를 두번 누르면 한글이 되는 설정이다. Keychron K12(영어배열) + Macbook M1 카라비너 설정 / Simple Modificiations   카라비너 설정 / Complex modifications { "title" : "한글전환 커스텀 For M1 " , "rules" : [ { "description" : "영어 키보드 - 좌측Shift+스페이스:영어, 우측Shift+스페이스:히라가나, 우측 커맨드키 더블클릭:한글" , "manipulators" : [ { "type" : "basic" , "from" : { "key_code" : "spacebar" , "modifiers" : { "mandatory" : [

Windows의 제품키 표시해주는 Script

 가끔씩 윈도우즈의 제품키를 확인할 필요가 있다.

특히나 회사에서 PC들을 관리할때 이 PC가 대체 어떤 제품키를 이용하고 있는 중인지 파악이 안될때 매번 레지스트리 편집기를 열어서 확인하는게 귀찮은 작업이었다. 구글링으로 검색하여 보니 아니나 다를까 같은 고민을 하는 수많은 유저들에 의해서 이미 많은 vbs스크립트가 제작되어 있었기에 그중에 아무거나 하나 골라 백업용도로 저장해 놓도록 한다.

Windows7이하의 경우

Set WshShell = WScript.CreateObject("WScript.Shell")
 
KeyPath = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"
MsgBox ExtractKey(WshShell.RegRead(KeyPath))
 
Function ExtractKey(KeyInput)
    Const KeyOffset = 52
    i = 28
    CharWhitelist = "BCDFGHJKMPQRTVWXY2346789"
    Do
        Cur = 0
        x = 14
        Do
            Cur = Cur * 256
            Cur = KeyInput(x + KeyOffset) + Cur
            KeyInput(x + KeyOffset) = (Cur \ 24) And 255
            Cur = Cur Mod 24
            x = x -1
        Loop While x >= 0
        i = i -1
        KeyOutput = Mid(CharWhitelist, Cur + 1, 1) & KeyOutput
        If (((29 - i) Mod 6) = 0) And (i <> -1) Then
            i = i -1
            KeyOutput = "-" & KeyOutput
        End If
    Loop While i >= 0
    ExtractKey = KeyOutput
End Function
 

Windows8이상의 경우

Option Explicit
 
Dim objshell,path,DigitalID, Result
Set objshell = CreateObject("WScript.Shell")
'Set registry key path
Path = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
'Registry key value
DigitalID = objshell.RegRead(Path & "DigitalProductId")
Dim ProductName,ProductID,ProductKey,ProductData
'Get ProductName, ProductID, ProductKey
ProductName = "Product Name: " & objshell.RegRead(Path & "ProductName")
ProductID = "Product ID: " & objshell.RegRead(Path & "ProductID")
ProductKey = "Installed Key: " & ConvertToKey(DigitalID)
ProductData = ProductName  & vbNewLine & ProductID  & vbNewLine & ProductKey
'Show messbox if save to a file
If vbYes = MsgBox(ProductData  & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "BackUp Windows Key Information") then
   Save ProductData
End If
 
'Convert binary to chars
Function ConvertToKey(Key)
    Const KeyOffset = 52
    Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
    'Check if OS is Windows 8
    isWin8 = (Key(66) \ 6) And 1
    Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
    i = 24
    Maps = "BCDFGHJKMPQRTVWXY2346789"
    Do
       Current= 0
        j = 14
        Do
           Current = Current* 256
           Current = Key(j + KeyOffset) + Current
           Key(j + KeyOffset) = (Current \ 24)
           Current=Current Mod 24
            j = j -1
        Loop While j >= 0
        i = i -1
        KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput
        Last = Current
    Loop While i >= 0
    keypart1 = Mid(KeyOutput, 2, Last)
    insert = "N"
    KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
    If Last = 0 Then KeyOutput = insert & KeyOutput
    ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)
  
   
End Function
'Save data to a file
Function Save(Data)
    Dim fso, fName, txt,objshell,UserName
    Set objshell = CreateObject("wscript.shell")
    'Get current user name
    UserName = objshell.ExpandEnvironmentStrings("%UserName%")
    'Create a text file on desktop
    fName = "C:\Users\" & UserName & "\Desktop\WindowsKeyInfo.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txt = fso.CreateTextFile(fName)
    txt.Writeline Data
    txt.Close
End Function

 각 파일을 확장자 vbs로 저장하여 실행

 

댓글

이 블로그의 인기 게시물

CISCO 2960s 초기화 후 기본 설정

curl 명령어 옵션

해외거주 국민을 위한 "교민폰" 사용후기