python/convert key to key_down or key_up

KIWI·2020년 8월 6일
0

사용자 입력 로깅 데이터를 key_pressed으로 받는 것이 좋다. 나중에 어떤 방식으로 활용하게 될지 모르기 때문이다. 그러나 활용할 때에는 언제 키가 최초로 눌렸는지(key_down), 키에서 손을 떼었는지(key_up, released)를 알아야 할 때가 있고, 간단한 코드임에도 다시 생각하기 귀찮아서 코드를 남긴다(난 항상 그림을 그려야 이걸 짤 수 있었다).

보통 released는 오해없이 쓰이지만, 라이브러리에 따라서 pressed를 눌리는 시점을 가리키는지, 눌려있는 상태를 가리키는지 애매한 경우가 많다. 유니티 라이브러리에서는 그것을 GetKeyDown(), GetKey(), GetKeyUp()이라고 이름 지었는데 명쾌한 것 같아서 그것을 따라 이름 지었다.


def extract_key_pressed(key_inputs:np.array, key:str):
    return np.asarray([(key in key_input.split('/')) for key_input in key_inputs])
    
    
def get_key_down(inputs:np.array):
    '''
    get key(boolean np.array) --> get down(boolean np.array)
    '''
    prev = inputs[:-1]
    cur = inputs[1:]
    down = np.full(len(inputs), False)
    down[1:] = (prev == False) & (cur == True)
    return down

def get_key_up(inputs:np.array):
    '''
    get key(boolean np.array) --> get up(boolean np.array)
    '''
    prev = inputs[:-1]
    cur = inputs[1:]
    up = np.full(len(inputs), False)
    up[1:] = (prev == True) & (cur == False)
    return up

0개의 댓글